From 5912076f4046c171c6dd3530d9b966e0789694c8 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Fri, 8 May 2026 18:36:48 -0600 Subject: [PATCH 1/5] feat(beacon): UUPS upgradeable L2SlashingReceiver(s) (C-3) + bindings v0.15.0 Round 4 audit fix C-3. The five L2-side receivers that accept cross-chain slashing and bridge messages were immutable, so any post-mainnet bug required redeploying the receiver and re-authorising every sender on every bridge. They are now UUPS upgradeable, with state moved to ERC-7201 namespaced slots and `_authorizeUpgrade` gated on the existing owner role. Contracts converted: - src/beacon/L2SlashingReceiver.sol (`tangle.beacon.L2SlashingReceiver`) - src/beacon/bridges/{Arbitrum,Base,Hyperlane,LayerZero}*Receiver (`tangle.beacon.bridges.`) Each contract: - Inherits Initializable + UUPSUpgradeable + OwnableUpgradeable. - Disables initializers on the implementation (`_disableInitializers()` in the constructor). - Holds all mutable state in a single namespaced struct + 50-slot `__gap` for forward compatibility. - Routes upgrade authority through `onlyOwner` (production owner should be a multisig / timelock; the receiver's H-4 SENDER_ACTIVATION_DELAY timelock on messenger / slasher swaps remains unchanged). Init order: ownership is granted before any other initialization step so the configuration calls that follow (`setMessenger`, `setAuthorizedSender`, `setTrustedSender`, `setPeer`, ...) are guarded from block one. The bootstrap exemption that allows `setMessenger`/`setSlasher` to write immediately when the current value is zero is preserved so deploy scripts do not deadlock for two days. Migration: existing deployments must be re-deployed behind a fresh ERC1967 proxy. The receivers were not yet on mainnet, so there is no in-place storage migration path to support; this is documented in the bindings CHANGELOG. Deploy + tests: - script/DeployL2Slashing.s.sol now deploys impl + ERC1967 proxy and encodes `initialize(...)` calldata for all four bridge variants. - New test/beacon/L2SlashingReceiverUUPS.t.sol covers init-is-one-shot, impl-cannot-be-initialized, owner-gated upgrade, attacker-rejected upgrade, state-persistence-across-upgrade, and ERC-7201 slot placement (vm.load on the namespaced slot). - All 5 affected existing test files were updated to deploy via proxy and to expect `OwnableUnauthorizedAccount` instead of "Only owner" for the receivers. Bindings + versioning: - cargo xtask gen-bindings re-run. - bindings/Cargo.toml + fixtures/Cargo.toml bumped to 0.15.0 (coordinated minor for all four Round 4 PRs). - CHANGELOG entry added. --- Cargo.lock | 4 +- bindings/CHANGELOG.md | 18 ++ bindings/Cargo.toml | 2 +- bindings/TNT_CORE_VERSION | 2 +- bindings/abi/IBlueprintServiceManager.json | 2 +- bindings/abi/IMultiAssetDelegation.json | 2 +- bindings/abi/ITangle.json | 2 +- bindings/abi/ITangleFull.json | 2 +- bindings/abi/ITangleSlashing.json | 2 +- bindings/abi/MultiAssetDelegation.json | 2 +- bindings/abi/OperatorStatusRegistry.json | 2 +- fixtures/Cargo.toml | 2 +- script/DeployL2Slashing.s.sol | 49 ++- src/beacon/L2SlashingReceiver.sol | 257 ++++++++++------ .../bridges/ArbitrumCrossChainMessenger.sol | 110 +++++-- .../bridges/BaseCrossChainMessenger.sol | 119 ++++++-- .../bridges/HyperlaneCrossChainMessenger.sol | 137 +++++---- .../bridges/LayerZeroCrossChainMessenger.sol | 131 ++++---- test/beacon/CrossChainSlashingTest.t.sol | 12 +- test/beacon/L2SlashingReceiverUUPS.t.sol | 288 ++++++++++++++++++ .../bridges/CrossChainMessengersTest.t.sol | 113 +++++-- test/security/L2SlashingSilentDedupTest.t.sol | 7 +- 22 files changed, 980 insertions(+), 285 deletions(-) create mode 100644 test/beacon/L2SlashingReceiverUUPS.t.sol diff --git a/Cargo.lock b/Cargo.lock index cdc8caed..ddfd1079 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3351,7 +3351,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tnt-core-bindings" -version = "0.13.0" +version = "0.15.0" dependencies = [ "alloy", "alloy-contract", @@ -3361,7 +3361,7 @@ dependencies = [ [[package]] name = "tnt-core-fixtures" -version = "0.13.0" +version = "0.15.0" [[package]] name = "tokio" diff --git a/bindings/CHANGELOG.md b/bindings/CHANGELOG.md index fd57b634..ab3facb4 100644 --- a/bindings/CHANGELOG.md +++ b/bindings/CHANGELOG.md @@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.15.0] - 2026-05-08 + +### Changed (BREAKING) + +- Round 4 audit C-3: `L2SlashingReceiver` and the four bridge-adapter receivers + (`ArbitrumL2Receiver`, `BaseL2Receiver`, `HyperlaneReceiver`, + `LayerZeroReceiver`) are now UUPS upgradeable. The deploy interface is changed + from a plain `new Contract(...)` to a proxy + `initialize(...)` pair, and the + initializer now requires an explicit `_owner` argument (previously implicit + `msg.sender`). Mutable state has been moved to ERC-7201 namespaced slots + under `tangle.beacon.L2SlashingReceiver` and + `tangle.beacon.bridges.{Arbitrum,Base,Hyperlane,LayerZero}*Receiver`. Owner- + gated functions revert with `OwnableUnauthorizedAccount(account)` instead of + `"Only owner"`. The `transferOwnership` selector now reverts on + `address(0)` with `OwnableInvalidOwner` instead of `"Zero address"`. There is + no in-place storage migration path; existing deployments must be redeployed + behind a fresh proxy and re-authorised. + ## [0.14.0] - 2026-05-08 ### Changed (BREAKING) diff --git a/bindings/Cargo.toml b/bindings/Cargo.toml index b22df45e..63e6edc7 100644 --- a/bindings/Cargo.toml +++ b/bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tnt-core-bindings" -version = "0.14.0" +version = "0.15.0" edition = "2021" rust-version = "1.81" description = "Rust bindings for TNT Core Solidity contracts (Tangle staking protocol)" diff --git a/bindings/TNT_CORE_VERSION b/bindings/TNT_CORE_VERSION index 00e3f02b..89003ee8 100644 --- a/bindings/TNT_CORE_VERSION +++ b/bindings/TNT_CORE_VERSION @@ -1 +1 @@ -5201cf08bbe64238f0533d113840d7280afdaa08 \ No newline at end of file +98a5484534148b6b556085cf450ac5abb5e0d6b5 \ No newline at end of file diff --git a/bindings/abi/IBlueprintServiceManager.json b/bindings/abi/IBlueprintServiceManager.json index d86e4918..73a32e9f 100644 --- a/bindings/abi/IBlueprintServiceManager.json +++ b/bindings/abi/IBlueprintServiceManager.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"canJoin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canLeave","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"forceRemoveAllowsBelowMin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ok","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAggregationThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"thresholdBps","type":"uint16","internalType":"uint16"},{"name":"thresholdType","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatInterval","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"interval","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"threshold","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getMinOperatorStake","inputs":[],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNonPaymentTerminationPolicy","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"graceIntervals","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRequiredResultCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getSlashingWindow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"window","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"onAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onApprove","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"stakingPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onBlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"tangleCore","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitCanceled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitScheduled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onJobResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"outputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onOperatorJoined","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorLeft","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRegister","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onReject","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"requestInputs","type":"bytes","internalType":"bytes"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentAsset","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onServiceInitialized","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onServiceTermination","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnappliedSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnregister","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUpdatePreferences","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"newPreferences","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryDeveloperPaymentAddress","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"developerPaymentAddress","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"queryDisputeOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"disputeOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queryIsPaymentAssetAllowed","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"isAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"querySlashingOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"slashingOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requiresAggregation","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canJoin(uint64,address)":"b47242e8","canLeave(uint64,address)":"e518de76","forceRemoveAllowsBelowMin(uint64)":"f3e28f32","getAggregationThreshold(uint64,uint8)":"25fcc64e","getExitConfig(uint64)":"d2672ed4","getHeartbeatInterval(uint64)":"0068080b","getHeartbeatThreshold(uint64)":"92cbb78e","getMinOperatorStake()":"54dce6c2","getNonPaymentTerminationPolicy(uint64)":"71e8e85d","getRequiredResultCount(uint64,uint8)":"4c443e04","getSlashingWindow(uint64)":"3fdadfcc","onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":"158bb2eb","onApprove(address,uint64,uint8)":"b159eb34","onBlueprintCreated(uint64,address,address)":"0b6535d7","onExitCanceled(uint64,address)":"5440662c","onExitScheduled(uint64,address,uint64)":"e0559c63","onJobCall(uint64,uint8,uint64,bytes)":"9838caa3","onJobResult(uint64,uint8,uint64,address,bytes,bytes)":"c40c80d1","onOperatorJoined(uint64,address,uint16)":"9aa26a92","onOperatorLeft(uint64,address)":"965d231b","onRegister(address,bytes)":"67793cc6","onReject(address,uint64)":"c9cd4a18","onRequest(uint64,address,address[],bytes,uint64,address,uint256)":"c28cd812","onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":"82a1ece4","onServiceTermination(uint64,address)":"a24e8a90","onSlash(uint64,bytes,uint8)":"7e14b919","onUnappliedSlash(uint64,bytes,uint8)":"0881898f","onUnregister(address)":"151a4576","onUpdatePreferences(address,bytes)":"f58e2066","queryDeveloperPaymentAddress(uint64)":"08179f35","queryDisputeOrigin(uint64)":"14b4df4c","queryIsPaymentAssetAllowed(uint64,address)":"e390fcdb","querySlashingOrigin(uint64)":"74ceeb55","requiresAggregation(uint64,uint8)":"19ed5bb2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canLeave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"forceRemoveAllowsBelowMin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getAggregationThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"thresholdBps\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"thresholdType\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatInterval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatThreshold\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinOperatorStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getNonPaymentTerminationPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"graceIntervals\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getRequiredResultCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"required\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashingWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"window\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"onAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"stakingPercent\",\"type\":\"uint8\"}],\"name\":\"onApprove\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tangleCore\",\"type\":\"address\"}],\"name\":\"onBlueprintCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onExitCanceled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"onExitScheduled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"onJobCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputs\",\"type\":\"bytes\"}],\"name\":\"onJobResult\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"onOperatorJoined\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"onRegister\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"onReject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"requestInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"name\":\"onRequest\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"onServiceInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onServiceTermination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onUnappliedSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onUnregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newPreferences\",\"type\":\"bytes\"}],\"name\":\"onUpdatePreferences\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDeveloperPaymentAddress\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"developerPaymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDisputeOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"disputeOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"queryIsPaymentAssetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"querySlashingOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"slashingOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"requiresAggregation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Blueprint developers implement this to customize all aspects of their blueprint. This is the primary integration point for blueprint developers - implement the hooks you need and leave others as default (via BlueprintServiceManagerBase). The lifecycle flow: 1. Blueprint created \\u2192 onBlueprintCreated 2. Operators register \\u2192 onRegister 3. Service requested \\u2192 onRequest 4. Operators approve \\u2192 onApprove 5. Service activated \\u2192 onServiceInitialized 6. Jobs submitted \\u2192 onJobCall 7. Results submitted \\u2192 onJobResult 8. Service terminated \\u2192 onServiceTermination\",\"kind\":\"dev\",\"methods\":{\"canJoin(uint64,address)\":{\"details\":\"Called before operator joins - return false to reject\",\"params\":{\"operator\":\"The operator wanting to join\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can join\"}},\"canLeave(uint64,address)\":{\"details\":\"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.\",\"params\":{\"operator\":\"The operator wanting to leave\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can leave\"}},\"forceRemoveAllowsBelowMin(uint64)\":{\"details\":\"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"ok\":\"True to allow eviction below the minimum operator count\"}},\"getAggregationThreshold(uint64,uint8)\":{\"details\":\"Only relevant if requiresAggregation returns true\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"thresholdBps\":\"Threshold in basis points (6700 = 67%)\",\"thresholdType\":\"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)\"}},\"getExitConfig(uint64)\":{\"details\":\"Defines minimum commitment and exit queue timing\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"exitQueueDuration\":\"Time between scheduling exit and completing it (seconds)\",\"forceExitAllowed\":\"Whether service owner can force-exit operators\",\"minCommitmentDuration\":\"Minimum time operator must stay after joining (seconds)\",\"useDefault\":\"True to use protocol default\"}},\"getHeartbeatInterval(uint64)\":{\"details\":\"Operators must submit heartbeats within this interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"interval\":\"Heartbeat interval in blocks (0 = disabled)\",\"useDefault\":\"True to use protocol default, false to use custom value\"}},\"getHeartbeatThreshold(uint64)\":{\"details\":\"Percentage of operators that must respond within interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"threshold\":\"Threshold percentage (0-100)\",\"useDefault\":\"True to use protocol default\"}},\"getMinOperatorStake()\":{\"details\":\"Called during operator registration to validate stake requirements\",\"returns\":{\"minStake\":\"Custom minimum stake amount (only used if useDefault=false)\",\"useDefault\":\"True to use protocol default from staking module\"}},\"getNonPaymentTerminationPolicy(uint64)\":{\"details\":\"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"graceIntervals\":\"Additional full intervals to wait after first missed payment\",\"useDefault\":\"True to use protocol default\"}},\"getRequiredResultCount(uint64,uint8)\":{\"details\":\"Override for consensus requirements (e.g., 2/3 majority)\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"Number of results needed (0 = service operator count)\"}},\"getSlashingWindow(uint64)\":{\"details\":\"Time window for disputes before slash is finalized\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"useDefault\":\"True to use protocol default\",\"window\":\"Slashing window in blocks\"}},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Validate the aggregated result, verify BLS signature, check threshold\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key of signers (G2 point)\",\"aggregatedSignature\":\"The aggregated BLS signature (G1 point x, y)\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"output\":\"The aggregated output\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap of which operators signed\"}},\"onApprove(address,uint64,uint8)\":{\"params\":{\"operator\":\"The approving operator\",\"requestId\":\"The request ID\",\"stakingPercent\":\"Percentage of stake committed to this service (0-100)\"}},\"onBlueprintCreated(uint64,address,address)\":{\"details\":\"Store the blueprintId and tangleCore address for future reference\",\"params\":{\"blueprintId\":\"The new blueprint ID\",\"owner\":\"The blueprint owner\",\"tangleCore\":\"The address of the Tangle core contract\"}},\"onExitCanceled(uint64,address)\":{\"params\":{\"operator\":\"The operator canceling exit\",\"serviceId\":\"The service ID\"}},\"onExitScheduled(uint64,address,uint64)\":{\"details\":\"Allows manager to track pending exits, notify other parties, etc.\",\"params\":{\"executeAfter\":\"Timestamp when exit can be executed\",\"operator\":\"The operator scheduling exit\",\"serviceId\":\"The service ID\"}},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"details\":\"Validate job inputs, check caller permissions, etc.\",\"params\":{\"inputs\":\"Job inputs (blueprint-specific encoding)\",\"job\":\"The job index in the blueprint\",\"jobCallId\":\"Unique ID for this job call\",\"serviceId\":\"The service ID\"}},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"details\":\"Validate result format, check operator eligibility, aggregate results\",\"params\":{\"inputs\":\"Original job inputs\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"operator\":\"The operator submitting\",\"outputs\":\"Result outputs (blueprint-specific encoding)\",\"serviceId\":\"The service ID\"}},\"onOperatorJoined(uint64,address,uint16)\":{\"params\":{\"exposureBps\":\"The operator's stake exposure in basis points\",\"operator\":\"The operator that joined\",\"serviceId\":\"The service ID\"}},\"onOperatorLeft(uint64,address)\":{\"params\":{\"operator\":\"The operator that left\",\"serviceId\":\"The service ID\"}},\"onRegister(address,bytes)\":{\"details\":\"Validate operator requirements here (stake, reputation, etc.)\",\"params\":{\"operator\":\"The operator's address\",\"registrationInputs\":\"Custom registration data (blueprint-specific encoding)\"}},\"onReject(address,uint64)\":{\"params\":{\"operator\":\"The rejecting operator\",\"requestId\":\"The request ID\"}},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"details\":\"Validate service configuration, operator selection, payment amount\",\"params\":{\"operators\":\"Requested operators\",\"paymentAmount\":\"Payment amount\",\"paymentAsset\":\"Payment token address (address(0) for native)\",\"requestId\":\"The request ID\",\"requestInputs\":\"Service configuration (blueprint-specific encoding)\",\"requester\":\"Who is requesting the service\",\"ttl\":\"Time-to-live for the service\"}},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"owner\":\"The service owner\",\"permittedCallers\":\"Addresses allowed to submit jobs\",\"requestId\":\"The original request ID\",\"serviceId\":\"The new service ID\",\"ttl\":\"Service time-to-live\"}},\"onServiceTermination(uint64,address)\":{\"params\":{\"owner\":\"The service owner\",\"serviceId\":\"The service ID\"}},\"onSlash(uint64,bytes,uint8)\":{\"params\":{\"offender\":\"The slashed operator\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage slashed\"}},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"details\":\"This is the dispute window - gather evidence, notify parties\",\"params\":{\"offender\":\"The operator being slashed (encoded as bytes for flexibility)\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage of stake to slash\"}},\"onUnregister(address)\":{\"params\":{\"operator\":\"The operator's address\"}},\"onUpdatePreferences(address,bytes)\":{\"params\":{\"newPreferences\":\"Updated preferences data\",\"operator\":\"The operator's address\"}},\"queryDeveloperPaymentAddress(uint64)\":{\"details\":\"Override to route payments to different addresses per service\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"developerPaymentAddress\":\"Address to receive developer share\"}},\"queryDisputeOrigin(uint64)\":{\"details\":\"Override to allow custom dispute resolution\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"disputeOrigin\":\"Address that can dispute (default: this contract)\"}},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"params\":{\"asset\":\"The payment asset address (address(0) for native)\",\"serviceId\":\"The service ID\"},\"returns\":{\"isAllowed\":\"True if the asset can be used for payment\"}},\"querySlashingOrigin(uint64)\":{\"details\":\"Override to allow custom slashing authorities (dispute contracts, etc.)\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"slashingOrigin\":\"Address that can slash (default: this contract)\"}},\"requiresAggregation(uint64,uint8)\":{\"details\":\"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"True if BLS aggregation is required for this job\"}}},\"title\":\"IBlueprintServiceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canJoin(uint64,address)\":{\"notice\":\"Check if an operator can join a dynamic service\"},\"canLeave(uint64,address)\":{\"notice\":\"Check if an operator can leave a dynamic service\"},\"forceRemoveAllowsBelowMin(uint64)\":{\"notice\":\"Whether `forceRemoveOperator` may drop the service below `minOperators`.\"},\"getAggregationThreshold(uint64,uint8)\":{\"notice\":\"Get the aggregation threshold configuration for a job\"},\"getExitConfig(uint64)\":{\"notice\":\"Get the exit configuration for operator departures\"},\"getHeartbeatInterval(uint64)\":{\"notice\":\"Get the heartbeat interval for a service\"},\"getHeartbeatThreshold(uint64)\":{\"notice\":\"Get the heartbeat threshold for a service\"},\"getMinOperatorStake()\":{\"notice\":\"Get the minimum stake required for operators to register for this blueprint\"},\"getNonPaymentTerminationPolicy(uint64)\":{\"notice\":\"Get non-payment termination policy for subscription services\"},\"getRequiredResultCount(uint64,uint8)\":{\"notice\":\"Get the number of results required to complete a job\"},\"getSlashingWindow(uint64)\":{\"notice\":\"Get the slashing window for a service\"},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Called when an aggregated job result is submitted\"},\"onApprove(address,uint64,uint8)\":{\"notice\":\"Called when an operator approves a service request\"},\"onBlueprintCreated(uint64,address,address)\":{\"notice\":\"Called when blueprint is created\"},\"onExitCanceled(uint64,address)\":{\"notice\":\"Called when an operator cancels their scheduled exit\"},\"onExitScheduled(uint64,address,uint64)\":{\"notice\":\"Called when an operator schedules their exit from a service\"},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"notice\":\"Called when a job is submitted\"},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"notice\":\"Called when an operator submits a job result\"},\"onOperatorJoined(uint64,address,uint16)\":{\"notice\":\"Called after an operator successfully joins a service\"},\"onOperatorLeft(uint64,address)\":{\"notice\":\"Called after an operator successfully leaves a service\"},\"onRegister(address,bytes)\":{\"notice\":\"Called when an operator registers to this blueprint\"},\"onReject(address,uint64)\":{\"notice\":\"Called when an operator rejects a service request\"},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"notice\":\"Called when a service is requested\"},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"notice\":\"Called when service becomes active (all operators approved)\"},\"onServiceTermination(uint64,address)\":{\"notice\":\"Called when service is terminated\"},\"onSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is finalized and applied\"},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is queued but not yet applied\"},\"onUnregister(address)\":{\"notice\":\"Called when an operator unregisters from this blueprint\"},\"onUpdatePreferences(address,bytes)\":{\"notice\":\"Called when an operator updates their preferences (RPC address, etc.)\"},\"queryDeveloperPaymentAddress(uint64)\":{\"notice\":\"Get the developer payment address for a service\"},\"queryDisputeOrigin(uint64)\":{\"notice\":\"Query the account authorized to dispute slashes\"},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"notice\":\"Check if a payment asset is allowed for this blueprint\"},\"querySlashingOrigin(uint64)\":{\"notice\":\"Query the account authorized to propose slashes for a service\"},\"requiresAggregation(uint64,uint8)\":{\"notice\":\"Check if a job requires BLS aggregated results\"}},\"notice\":\"Full interface for blueprint-specific service managers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBlueprintServiceManager.sol\":\"IBlueprintServiceManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IBlueprintServiceManager.sol\":{\"keccak256\":\"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483\",\"dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canJoin","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canLeave","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"forceRemoveAllowsBelowMin","outputs":[{"internalType":"bool","name":"ok","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getAggregationThreshold","outputs":[{"internalType":"uint16","name":"thresholdBps","type":"uint16"},{"internalType":"uint8","name":"thresholdType","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatInterval","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"interval","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatThreshold","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint8","name":"threshold","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinOperatorStake","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint256","name":"minStake","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getNonPaymentTerminationPolicy","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"graceIntervals","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getRequiredResultCount","outputs":[{"internalType":"uint32","name":"required","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashingWindow","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"window","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"onAggregatedResult"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint8","name":"stakingPercent","type":"uint8"}],"stateMutability":"payable","type":"function","name":"onApprove"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"tangleCore","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onBlueprintCreated"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onExitCanceled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onExitScheduled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobCall"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"bytes","name":"outputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorJoined"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorLeft"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onRegister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onReject"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"requestInputs","type":"bytes"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentAsset","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"onRequest"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onServiceInitialized"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onServiceTermination"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onUnappliedSlash"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onUnregister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"newPreferences","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onUpdatePreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDeveloperPaymentAddress","outputs":[{"internalType":"address payable","name":"developerPaymentAddress","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDisputeOrigin","outputs":[{"internalType":"address","name":"disputeOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"queryIsPaymentAssetAllowed","outputs":[{"internalType":"bool","name":"isAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"querySlashingOrigin","outputs":[{"internalType":"address","name":"slashingOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"requiresAggregation","outputs":[{"internalType":"bool","name":"required","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"canJoin(uint64,address)":{"details":"Called before operator joins - return false to reject","params":{"operator":"The operator wanting to join","serviceId":"The service ID"},"returns":{"allowed":"True if operator can join"}},"canLeave(uint64,address)":{"details":"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.","params":{"operator":"The operator wanting to leave","serviceId":"The service ID"},"returns":{"allowed":"True if operator can leave"}},"forceRemoveAllowsBelowMin(uint64)":{"details":"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).","params":{"serviceId":"The service ID"},"returns":{"ok":"True to allow eviction below the minimum operator count"}},"getAggregationThreshold(uint64,uint8)":{"details":"Only relevant if requiresAggregation returns true","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"thresholdBps":"Threshold in basis points (6700 = 67%)","thresholdType":"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)"}},"getExitConfig(uint64)":{"details":"Defines minimum commitment and exit queue timing","params":{"serviceId":"The service ID"},"returns":{"exitQueueDuration":"Time between scheduling exit and completing it (seconds)","forceExitAllowed":"Whether service owner can force-exit operators","minCommitmentDuration":"Minimum time operator must stay after joining (seconds)","useDefault":"True to use protocol default"}},"getHeartbeatInterval(uint64)":{"details":"Operators must submit heartbeats within this interval","params":{"serviceId":"The service ID"},"returns":{"interval":"Heartbeat interval in blocks (0 = disabled)","useDefault":"True to use protocol default, false to use custom value"}},"getHeartbeatThreshold(uint64)":{"details":"Percentage of operators that must respond within interval","params":{"serviceId":"The service ID"},"returns":{"threshold":"Threshold percentage (0-100)","useDefault":"True to use protocol default"}},"getMinOperatorStake()":{"details":"Called during operator registration to validate stake requirements","returns":{"minStake":"Custom minimum stake amount (only used if useDefault=false)","useDefault":"True to use protocol default from staking module"}},"getNonPaymentTerminationPolicy(uint64)":{"details":"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.","params":{"serviceId":"The service ID"},"returns":{"graceIntervals":"Additional full intervals to wait after first missed payment","useDefault":"True to use protocol default"}},"getRequiredResultCount(uint64,uint8)":{"details":"Override for consensus requirements (e.g., 2/3 majority)","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"Number of results needed (0 = service operator count)"}},"getSlashingWindow(uint64)":{"details":"Time window for disputes before slash is finalized","params":{"serviceId":"The service ID"},"returns":{"useDefault":"True to use protocol default","window":"Slashing window in blocks"}},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Validate the aggregated result, verify BLS signature, check threshold","params":{"aggregatedPubkey":"The aggregated public key of signers (G2 point)","aggregatedSignature":"The aggregated BLS signature (G1 point x, y)","job":"The job index","jobCallId":"The job call ID","output":"The aggregated output","serviceId":"The service ID","signerBitmap":"Bitmap of which operators signed"}},"onApprove(address,uint64,uint8)":{"params":{"operator":"The approving operator","requestId":"The request ID","stakingPercent":"Percentage of stake committed to this service (0-100)"}},"onBlueprintCreated(uint64,address,address)":{"details":"Store the blueprintId and tangleCore address for future reference","params":{"blueprintId":"The new blueprint ID","owner":"The blueprint owner","tangleCore":"The address of the Tangle core contract"}},"onExitCanceled(uint64,address)":{"params":{"operator":"The operator canceling exit","serviceId":"The service ID"}},"onExitScheduled(uint64,address,uint64)":{"details":"Allows manager to track pending exits, notify other parties, etc.","params":{"executeAfter":"Timestamp when exit can be executed","operator":"The operator scheduling exit","serviceId":"The service ID"}},"onJobCall(uint64,uint8,uint64,bytes)":{"details":"Validate job inputs, check caller permissions, etc.","params":{"inputs":"Job inputs (blueprint-specific encoding)","job":"The job index in the blueprint","jobCallId":"Unique ID for this job call","serviceId":"The service ID"}},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"details":"Validate result format, check operator eligibility, aggregate results","params":{"inputs":"Original job inputs","job":"The job index","jobCallId":"The job call ID","operator":"The operator submitting","outputs":"Result outputs (blueprint-specific encoding)","serviceId":"The service ID"}},"onOperatorJoined(uint64,address,uint16)":{"params":{"exposureBps":"The operator's stake exposure in basis points","operator":"The operator that joined","serviceId":"The service ID"}},"onOperatorLeft(uint64,address)":{"params":{"operator":"The operator that left","serviceId":"The service ID"}},"onRegister(address,bytes)":{"details":"Validate operator requirements here (stake, reputation, etc.)","params":{"operator":"The operator's address","registrationInputs":"Custom registration data (blueprint-specific encoding)"}},"onReject(address,uint64)":{"params":{"operator":"The rejecting operator","requestId":"The request ID"}},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"details":"Validate service configuration, operator selection, payment amount","params":{"operators":"Requested operators","paymentAmount":"Payment amount","paymentAsset":"Payment token address (address(0) for native)","requestId":"The request ID","requestInputs":"Service configuration (blueprint-specific encoding)","requester":"Who is requesting the service","ttl":"Time-to-live for the service"}},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"params":{"blueprintId":"The blueprint ID","owner":"The service owner","permittedCallers":"Addresses allowed to submit jobs","requestId":"The original request ID","serviceId":"The new service ID","ttl":"Service time-to-live"}},"onServiceTermination(uint64,address)":{"params":{"owner":"The service owner","serviceId":"The service ID"}},"onSlash(uint64,bytes,uint8)":{"params":{"offender":"The slashed operator","serviceId":"The service ID","slashPercent":"Percentage slashed"}},"onUnappliedSlash(uint64,bytes,uint8)":{"details":"This is the dispute window - gather evidence, notify parties","params":{"offender":"The operator being slashed (encoded as bytes for flexibility)","serviceId":"The service ID","slashPercent":"Percentage of stake to slash"}},"onUnregister(address)":{"params":{"operator":"The operator's address"}},"onUpdatePreferences(address,bytes)":{"params":{"newPreferences":"Updated preferences data","operator":"The operator's address"}},"queryDeveloperPaymentAddress(uint64)":{"details":"Override to route payments to different addresses per service","params":{"serviceId":"The service ID"},"returns":{"developerPaymentAddress":"Address to receive developer share"}},"queryDisputeOrigin(uint64)":{"details":"Override to allow custom dispute resolution","params":{"serviceId":"The service ID"},"returns":{"disputeOrigin":"Address that can dispute (default: this contract)"}},"queryIsPaymentAssetAllowed(uint64,address)":{"params":{"asset":"The payment asset address (address(0) for native)","serviceId":"The service ID"},"returns":{"isAllowed":"True if the asset can be used for payment"}},"querySlashingOrigin(uint64)":{"details":"Override to allow custom slashing authorities (dispute contracts, etc.)","params":{"serviceId":"The service ID"},"returns":{"slashingOrigin":"Address that can slash (default: this contract)"}},"requiresAggregation(uint64,uint8)":{"details":"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"True if BLS aggregation is required for this job"}}},"version":1},"userdoc":{"kind":"user","methods":{"canJoin(uint64,address)":{"notice":"Check if an operator can join a dynamic service"},"canLeave(uint64,address)":{"notice":"Check if an operator can leave a dynamic service"},"forceRemoveAllowsBelowMin(uint64)":{"notice":"Whether `forceRemoveOperator` may drop the service below `minOperators`."},"getAggregationThreshold(uint64,uint8)":{"notice":"Get the aggregation threshold configuration for a job"},"getExitConfig(uint64)":{"notice":"Get the exit configuration for operator departures"},"getHeartbeatInterval(uint64)":{"notice":"Get the heartbeat interval for a service"},"getHeartbeatThreshold(uint64)":{"notice":"Get the heartbeat threshold for a service"},"getMinOperatorStake()":{"notice":"Get the minimum stake required for operators to register for this blueprint"},"getNonPaymentTerminationPolicy(uint64)":{"notice":"Get non-payment termination policy for subscription services"},"getRequiredResultCount(uint64,uint8)":{"notice":"Get the number of results required to complete a job"},"getSlashingWindow(uint64)":{"notice":"Get the slashing window for a service"},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Called when an aggregated job result is submitted"},"onApprove(address,uint64,uint8)":{"notice":"Called when an operator approves a service request"},"onBlueprintCreated(uint64,address,address)":{"notice":"Called when blueprint is created"},"onExitCanceled(uint64,address)":{"notice":"Called when an operator cancels their scheduled exit"},"onExitScheduled(uint64,address,uint64)":{"notice":"Called when an operator schedules their exit from a service"},"onJobCall(uint64,uint8,uint64,bytes)":{"notice":"Called when a job is submitted"},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"notice":"Called when an operator submits a job result"},"onOperatorJoined(uint64,address,uint16)":{"notice":"Called after an operator successfully joins a service"},"onOperatorLeft(uint64,address)":{"notice":"Called after an operator successfully leaves a service"},"onRegister(address,bytes)":{"notice":"Called when an operator registers to this blueprint"},"onReject(address,uint64)":{"notice":"Called when an operator rejects a service request"},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"notice":"Called when a service is requested"},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"notice":"Called when service becomes active (all operators approved)"},"onServiceTermination(uint64,address)":{"notice":"Called when service is terminated"},"onSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is finalized and applied"},"onUnappliedSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is queued but not yet applied"},"onUnregister(address)":{"notice":"Called when an operator unregisters from this blueprint"},"onUpdatePreferences(address,bytes)":{"notice":"Called when an operator updates their preferences (RPC address, etc.)"},"queryDeveloperPaymentAddress(uint64)":{"notice":"Get the developer payment address for a service"},"queryDisputeOrigin(uint64)":{"notice":"Query the account authorized to dispute slashes"},"queryIsPaymentAssetAllowed(uint64,address)":{"notice":"Check if a payment asset is allowed for this blueprint"},"querySlashingOrigin(uint64)":{"notice":"Query the account authorized to propose slashes for a service"},"requiresAggregation(uint64,uint8)":{"notice":"Check if a job requires BLS aggregated results"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IBlueprintServiceManager.sol":"IBlueprintServiceManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IBlueprintServiceManager.sol":{"keccak256":"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4","urls":["bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483","dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q"],"license":"MIT"}},"version":1},"id":138} \ No newline at end of file +{"abi":[{"type":"function","name":"canJoin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canLeave","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"forceRemoveAllowsBelowMin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ok","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAggregationThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"thresholdBps","type":"uint16","internalType":"uint16"},{"name":"thresholdType","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatInterval","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"interval","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"threshold","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getMinOperatorStake","inputs":[],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNonPaymentTerminationPolicy","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"graceIntervals","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRequiredResultCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getSlashingWindow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"window","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"onAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onApprove","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"stakingPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onBlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"tangleCore","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitCanceled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitScheduled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onJobResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"outputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onOperatorJoined","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorLeft","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRegister","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onReject","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"requestInputs","type":"bytes","internalType":"bytes"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentAsset","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onServiceInitialized","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onServiceTermination","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnappliedSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnregister","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUpdatePreferences","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"newPreferences","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryDeveloperPaymentAddress","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"developerPaymentAddress","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"queryDisputeOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"disputeOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queryIsPaymentAssetAllowed","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"isAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"querySlashingOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"slashingOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requiresAggregation","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canJoin(uint64,address)":"b47242e8","canLeave(uint64,address)":"e518de76","forceRemoveAllowsBelowMin(uint64)":"f3e28f32","getAggregationThreshold(uint64,uint8)":"25fcc64e","getExitConfig(uint64)":"d2672ed4","getHeartbeatInterval(uint64)":"0068080b","getHeartbeatThreshold(uint64)":"92cbb78e","getMinOperatorStake()":"54dce6c2","getNonPaymentTerminationPolicy(uint64)":"71e8e85d","getRequiredResultCount(uint64,uint8)":"4c443e04","getSlashingWindow(uint64)":"3fdadfcc","onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":"158bb2eb","onApprove(address,uint64,uint8)":"b159eb34","onBlueprintCreated(uint64,address,address)":"0b6535d7","onExitCanceled(uint64,address)":"5440662c","onExitScheduled(uint64,address,uint64)":"e0559c63","onJobCall(uint64,uint8,uint64,bytes)":"9838caa3","onJobResult(uint64,uint8,uint64,address,bytes,bytes)":"c40c80d1","onOperatorJoined(uint64,address,uint16)":"9aa26a92","onOperatorLeft(uint64,address)":"965d231b","onRegister(address,bytes)":"67793cc6","onReject(address,uint64)":"c9cd4a18","onRequest(uint64,address,address[],bytes,uint64,address,uint256)":"c28cd812","onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":"82a1ece4","onServiceTermination(uint64,address)":"a24e8a90","onSlash(uint64,bytes,uint8)":"7e14b919","onUnappliedSlash(uint64,bytes,uint8)":"0881898f","onUnregister(address)":"151a4576","onUpdatePreferences(address,bytes)":"f58e2066","queryDeveloperPaymentAddress(uint64)":"08179f35","queryDisputeOrigin(uint64)":"14b4df4c","queryIsPaymentAssetAllowed(uint64,address)":"e390fcdb","querySlashingOrigin(uint64)":"74ceeb55","requiresAggregation(uint64,uint8)":"19ed5bb2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canLeave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"forceRemoveAllowsBelowMin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getAggregationThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"thresholdBps\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"thresholdType\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatInterval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatThreshold\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinOperatorStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getNonPaymentTerminationPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"graceIntervals\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getRequiredResultCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"required\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashingWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"window\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"onAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"stakingPercent\",\"type\":\"uint8\"}],\"name\":\"onApprove\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tangleCore\",\"type\":\"address\"}],\"name\":\"onBlueprintCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onExitCanceled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"onExitScheduled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"onJobCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputs\",\"type\":\"bytes\"}],\"name\":\"onJobResult\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"onOperatorJoined\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"onRegister\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"onReject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"requestInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"name\":\"onRequest\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"onServiceInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onServiceTermination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onUnappliedSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onUnregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newPreferences\",\"type\":\"bytes\"}],\"name\":\"onUpdatePreferences\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDeveloperPaymentAddress\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"developerPaymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDisputeOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"disputeOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"queryIsPaymentAssetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"querySlashingOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"slashingOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"requiresAggregation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Blueprint developers implement this to customize all aspects of their blueprint. This is the primary integration point for blueprint developers - implement the hooks you need and leave others as default (via BlueprintServiceManagerBase). The lifecycle flow: 1. Blueprint created \\u2192 onBlueprintCreated 2. Operators register \\u2192 onRegister 3. Service requested \\u2192 onRequest 4. Operators approve \\u2192 onApprove 5. Service activated \\u2192 onServiceInitialized 6. Jobs submitted \\u2192 onJobCall 7. Results submitted \\u2192 onJobResult 8. Service terminated \\u2192 onServiceTermination\",\"kind\":\"dev\",\"methods\":{\"canJoin(uint64,address)\":{\"details\":\"Called before operator joins - return false to reject\",\"params\":{\"operator\":\"The operator wanting to join\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can join\"}},\"canLeave(uint64,address)\":{\"details\":\"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.\",\"params\":{\"operator\":\"The operator wanting to leave\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can leave\"}},\"forceRemoveAllowsBelowMin(uint64)\":{\"details\":\"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"ok\":\"True to allow eviction below the minimum operator count\"}},\"getAggregationThreshold(uint64,uint8)\":{\"details\":\"Only relevant if requiresAggregation returns true\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"thresholdBps\":\"Threshold in basis points (6700 = 67%)\",\"thresholdType\":\"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)\"}},\"getExitConfig(uint64)\":{\"details\":\"Defines minimum commitment and exit queue timing\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"exitQueueDuration\":\"Time between scheduling exit and completing it (seconds)\",\"forceExitAllowed\":\"Whether service owner can force-exit operators\",\"minCommitmentDuration\":\"Minimum time operator must stay after joining (seconds)\",\"useDefault\":\"True to use protocol default\"}},\"getHeartbeatInterval(uint64)\":{\"details\":\"Operators must submit heartbeats within this interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"interval\":\"Heartbeat interval in blocks (0 = disabled)\",\"useDefault\":\"True to use protocol default, false to use custom value\"}},\"getHeartbeatThreshold(uint64)\":{\"details\":\"Percentage of operators that must respond within interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"threshold\":\"Threshold percentage (0-100)\",\"useDefault\":\"True to use protocol default\"}},\"getMinOperatorStake()\":{\"details\":\"Called during operator registration to validate stake requirements\",\"returns\":{\"minStake\":\"Custom minimum stake amount (only used if useDefault=false)\",\"useDefault\":\"True to use protocol default from staking module\"}},\"getNonPaymentTerminationPolicy(uint64)\":{\"details\":\"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"graceIntervals\":\"Additional full intervals to wait after first missed payment\",\"useDefault\":\"True to use protocol default\"}},\"getRequiredResultCount(uint64,uint8)\":{\"details\":\"Override for consensus requirements (e.g., 2/3 majority)\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"Number of results needed (0 = service operator count)\"}},\"getSlashingWindow(uint64)\":{\"details\":\"Time window for disputes before slash is finalized\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"useDefault\":\"True to use protocol default\",\"window\":\"Slashing window in blocks\"}},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Validate the aggregated result, verify BLS signature, check threshold\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key of signers (G2 point)\",\"aggregatedSignature\":\"The aggregated BLS signature (G1 point x, y)\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"output\":\"The aggregated output\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap of which operators signed\"}},\"onApprove(address,uint64,uint8)\":{\"params\":{\"operator\":\"The approving operator\",\"requestId\":\"The request ID\",\"stakingPercent\":\"Percentage of stake committed to this service (0-100)\"}},\"onBlueprintCreated(uint64,address,address)\":{\"details\":\"Store the blueprintId and tangleCore address for future reference\",\"params\":{\"blueprintId\":\"The new blueprint ID\",\"owner\":\"The blueprint owner\",\"tangleCore\":\"The address of the Tangle core contract\"}},\"onExitCanceled(uint64,address)\":{\"params\":{\"operator\":\"The operator canceling exit\",\"serviceId\":\"The service ID\"}},\"onExitScheduled(uint64,address,uint64)\":{\"details\":\"Allows manager to track pending exits, notify other parties, etc.\",\"params\":{\"executeAfter\":\"Timestamp when exit can be executed\",\"operator\":\"The operator scheduling exit\",\"serviceId\":\"The service ID\"}},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"details\":\"Validate job inputs, check caller permissions, etc.\",\"params\":{\"inputs\":\"Job inputs (blueprint-specific encoding)\",\"job\":\"The job index in the blueprint\",\"jobCallId\":\"Unique ID for this job call\",\"serviceId\":\"The service ID\"}},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"details\":\"Validate result format, check operator eligibility, aggregate results\",\"params\":{\"inputs\":\"Original job inputs\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"operator\":\"The operator submitting\",\"outputs\":\"Result outputs (blueprint-specific encoding)\",\"serviceId\":\"The service ID\"}},\"onOperatorJoined(uint64,address,uint16)\":{\"params\":{\"exposureBps\":\"The operator's stake exposure in basis points\",\"operator\":\"The operator that joined\",\"serviceId\":\"The service ID\"}},\"onOperatorLeft(uint64,address)\":{\"params\":{\"operator\":\"The operator that left\",\"serviceId\":\"The service ID\"}},\"onRegister(address,bytes)\":{\"details\":\"Validate operator requirements here (stake, reputation, etc.)\",\"params\":{\"operator\":\"The operator's address\",\"registrationInputs\":\"Custom registration data (blueprint-specific encoding)\"}},\"onReject(address,uint64)\":{\"params\":{\"operator\":\"The rejecting operator\",\"requestId\":\"The request ID\"}},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"details\":\"Validate service configuration, operator selection, payment amount\",\"params\":{\"operators\":\"Requested operators\",\"paymentAmount\":\"Payment amount\",\"paymentAsset\":\"Payment token address (address(0) for native)\",\"requestId\":\"The request ID\",\"requestInputs\":\"Service configuration (blueprint-specific encoding)\",\"requester\":\"Who is requesting the service\",\"ttl\":\"Time-to-live for the service\"}},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"owner\":\"The service owner\",\"permittedCallers\":\"Addresses allowed to submit jobs\",\"requestId\":\"The original request ID\",\"serviceId\":\"The new service ID\",\"ttl\":\"Service time-to-live\"}},\"onServiceTermination(uint64,address)\":{\"params\":{\"owner\":\"The service owner\",\"serviceId\":\"The service ID\"}},\"onSlash(uint64,bytes,uint8)\":{\"params\":{\"offender\":\"The slashed operator\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage slashed\"}},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"details\":\"This is the dispute window - gather evidence, notify parties\",\"params\":{\"offender\":\"The operator being slashed (encoded as bytes for flexibility)\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage of stake to slash\"}},\"onUnregister(address)\":{\"params\":{\"operator\":\"The operator's address\"}},\"onUpdatePreferences(address,bytes)\":{\"params\":{\"newPreferences\":\"Updated preferences data\",\"operator\":\"The operator's address\"}},\"queryDeveloperPaymentAddress(uint64)\":{\"details\":\"Override to route payments to different addresses per service\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"developerPaymentAddress\":\"Address to receive developer share\"}},\"queryDisputeOrigin(uint64)\":{\"details\":\"Override to allow custom dispute resolution\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"disputeOrigin\":\"Address that can dispute (default: this contract)\"}},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"params\":{\"asset\":\"The payment asset address (address(0) for native)\",\"serviceId\":\"The service ID\"},\"returns\":{\"isAllowed\":\"True if the asset can be used for payment\"}},\"querySlashingOrigin(uint64)\":{\"details\":\"Override to allow custom slashing authorities (dispute contracts, etc.)\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"slashingOrigin\":\"Address that can slash (default: this contract)\"}},\"requiresAggregation(uint64,uint8)\":{\"details\":\"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"True if BLS aggregation is required for this job\"}}},\"title\":\"IBlueprintServiceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canJoin(uint64,address)\":{\"notice\":\"Check if an operator can join a dynamic service\"},\"canLeave(uint64,address)\":{\"notice\":\"Check if an operator can leave a dynamic service\"},\"forceRemoveAllowsBelowMin(uint64)\":{\"notice\":\"Whether `forceRemoveOperator` may drop the service below `minOperators`.\"},\"getAggregationThreshold(uint64,uint8)\":{\"notice\":\"Get the aggregation threshold configuration for a job\"},\"getExitConfig(uint64)\":{\"notice\":\"Get the exit configuration for operator departures\"},\"getHeartbeatInterval(uint64)\":{\"notice\":\"Get the heartbeat interval for a service\"},\"getHeartbeatThreshold(uint64)\":{\"notice\":\"Get the heartbeat threshold for a service\"},\"getMinOperatorStake()\":{\"notice\":\"Get the minimum stake required for operators to register for this blueprint\"},\"getNonPaymentTerminationPolicy(uint64)\":{\"notice\":\"Get non-payment termination policy for subscription services\"},\"getRequiredResultCount(uint64,uint8)\":{\"notice\":\"Get the number of results required to complete a job\"},\"getSlashingWindow(uint64)\":{\"notice\":\"Get the slashing window for a service\"},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Called when an aggregated job result is submitted\"},\"onApprove(address,uint64,uint8)\":{\"notice\":\"Called when an operator approves a service request\"},\"onBlueprintCreated(uint64,address,address)\":{\"notice\":\"Called when blueprint is created\"},\"onExitCanceled(uint64,address)\":{\"notice\":\"Called when an operator cancels their scheduled exit\"},\"onExitScheduled(uint64,address,uint64)\":{\"notice\":\"Called when an operator schedules their exit from a service\"},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"notice\":\"Called when a job is submitted\"},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"notice\":\"Called when an operator submits a job result\"},\"onOperatorJoined(uint64,address,uint16)\":{\"notice\":\"Called after an operator successfully joins a service\"},\"onOperatorLeft(uint64,address)\":{\"notice\":\"Called after an operator successfully leaves a service\"},\"onRegister(address,bytes)\":{\"notice\":\"Called when an operator registers to this blueprint\"},\"onReject(address,uint64)\":{\"notice\":\"Called when an operator rejects a service request\"},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"notice\":\"Called when a service is requested\"},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"notice\":\"Called when service becomes active (all operators approved)\"},\"onServiceTermination(uint64,address)\":{\"notice\":\"Called when service is terminated\"},\"onSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is finalized and applied\"},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is queued but not yet applied\"},\"onUnregister(address)\":{\"notice\":\"Called when an operator unregisters from this blueprint\"},\"onUpdatePreferences(address,bytes)\":{\"notice\":\"Called when an operator updates their preferences (RPC address, etc.)\"},\"queryDeveloperPaymentAddress(uint64)\":{\"notice\":\"Get the developer payment address for a service\"},\"queryDisputeOrigin(uint64)\":{\"notice\":\"Query the account authorized to dispute slashes\"},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"notice\":\"Check if a payment asset is allowed for this blueprint\"},\"querySlashingOrigin(uint64)\":{\"notice\":\"Query the account authorized to propose slashes for a service\"},\"requiresAggregation(uint64,uint8)\":{\"notice\":\"Check if a job requires BLS aggregated results\"}},\"notice\":\"Full interface for blueprint-specific service managers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBlueprintServiceManager.sol\":\"IBlueprintServiceManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IBlueprintServiceManager.sol\":{\"keccak256\":\"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483\",\"dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canJoin","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canLeave","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"forceRemoveAllowsBelowMin","outputs":[{"internalType":"bool","name":"ok","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getAggregationThreshold","outputs":[{"internalType":"uint16","name":"thresholdBps","type":"uint16"},{"internalType":"uint8","name":"thresholdType","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatInterval","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"interval","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatThreshold","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint8","name":"threshold","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinOperatorStake","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint256","name":"minStake","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getNonPaymentTerminationPolicy","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"graceIntervals","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getRequiredResultCount","outputs":[{"internalType":"uint32","name":"required","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashingWindow","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"window","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"onAggregatedResult"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint8","name":"stakingPercent","type":"uint8"}],"stateMutability":"payable","type":"function","name":"onApprove"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"tangleCore","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onBlueprintCreated"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onExitCanceled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onExitScheduled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobCall"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"bytes","name":"outputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorJoined"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorLeft"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onRegister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onReject"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"requestInputs","type":"bytes"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentAsset","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"onRequest"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onServiceInitialized"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onServiceTermination"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onUnappliedSlash"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onUnregister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"newPreferences","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onUpdatePreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDeveloperPaymentAddress","outputs":[{"internalType":"address payable","name":"developerPaymentAddress","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDisputeOrigin","outputs":[{"internalType":"address","name":"disputeOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"queryIsPaymentAssetAllowed","outputs":[{"internalType":"bool","name":"isAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"querySlashingOrigin","outputs":[{"internalType":"address","name":"slashingOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"requiresAggregation","outputs":[{"internalType":"bool","name":"required","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"canJoin(uint64,address)":{"details":"Called before operator joins - return false to reject","params":{"operator":"The operator wanting to join","serviceId":"The service ID"},"returns":{"allowed":"True if operator can join"}},"canLeave(uint64,address)":{"details":"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.","params":{"operator":"The operator wanting to leave","serviceId":"The service ID"},"returns":{"allowed":"True if operator can leave"}},"forceRemoveAllowsBelowMin(uint64)":{"details":"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).","params":{"serviceId":"The service ID"},"returns":{"ok":"True to allow eviction below the minimum operator count"}},"getAggregationThreshold(uint64,uint8)":{"details":"Only relevant if requiresAggregation returns true","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"thresholdBps":"Threshold in basis points (6700 = 67%)","thresholdType":"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)"}},"getExitConfig(uint64)":{"details":"Defines minimum commitment and exit queue timing","params":{"serviceId":"The service ID"},"returns":{"exitQueueDuration":"Time between scheduling exit and completing it (seconds)","forceExitAllowed":"Whether service owner can force-exit operators","minCommitmentDuration":"Minimum time operator must stay after joining (seconds)","useDefault":"True to use protocol default"}},"getHeartbeatInterval(uint64)":{"details":"Operators must submit heartbeats within this interval","params":{"serviceId":"The service ID"},"returns":{"interval":"Heartbeat interval in blocks (0 = disabled)","useDefault":"True to use protocol default, false to use custom value"}},"getHeartbeatThreshold(uint64)":{"details":"Percentage of operators that must respond within interval","params":{"serviceId":"The service ID"},"returns":{"threshold":"Threshold percentage (0-100)","useDefault":"True to use protocol default"}},"getMinOperatorStake()":{"details":"Called during operator registration to validate stake requirements","returns":{"minStake":"Custom minimum stake amount (only used if useDefault=false)","useDefault":"True to use protocol default from staking module"}},"getNonPaymentTerminationPolicy(uint64)":{"details":"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.","params":{"serviceId":"The service ID"},"returns":{"graceIntervals":"Additional full intervals to wait after first missed payment","useDefault":"True to use protocol default"}},"getRequiredResultCount(uint64,uint8)":{"details":"Override for consensus requirements (e.g., 2/3 majority)","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"Number of results needed (0 = service operator count)"}},"getSlashingWindow(uint64)":{"details":"Time window for disputes before slash is finalized","params":{"serviceId":"The service ID"},"returns":{"useDefault":"True to use protocol default","window":"Slashing window in blocks"}},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Validate the aggregated result, verify BLS signature, check threshold","params":{"aggregatedPubkey":"The aggregated public key of signers (G2 point)","aggregatedSignature":"The aggregated BLS signature (G1 point x, y)","job":"The job index","jobCallId":"The job call ID","output":"The aggregated output","serviceId":"The service ID","signerBitmap":"Bitmap of which operators signed"}},"onApprove(address,uint64,uint8)":{"params":{"operator":"The approving operator","requestId":"The request ID","stakingPercent":"Percentage of stake committed to this service (0-100)"}},"onBlueprintCreated(uint64,address,address)":{"details":"Store the blueprintId and tangleCore address for future reference","params":{"blueprintId":"The new blueprint ID","owner":"The blueprint owner","tangleCore":"The address of the Tangle core contract"}},"onExitCanceled(uint64,address)":{"params":{"operator":"The operator canceling exit","serviceId":"The service ID"}},"onExitScheduled(uint64,address,uint64)":{"details":"Allows manager to track pending exits, notify other parties, etc.","params":{"executeAfter":"Timestamp when exit can be executed","operator":"The operator scheduling exit","serviceId":"The service ID"}},"onJobCall(uint64,uint8,uint64,bytes)":{"details":"Validate job inputs, check caller permissions, etc.","params":{"inputs":"Job inputs (blueprint-specific encoding)","job":"The job index in the blueprint","jobCallId":"Unique ID for this job call","serviceId":"The service ID"}},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"details":"Validate result format, check operator eligibility, aggregate results","params":{"inputs":"Original job inputs","job":"The job index","jobCallId":"The job call ID","operator":"The operator submitting","outputs":"Result outputs (blueprint-specific encoding)","serviceId":"The service ID"}},"onOperatorJoined(uint64,address,uint16)":{"params":{"exposureBps":"The operator's stake exposure in basis points","operator":"The operator that joined","serviceId":"The service ID"}},"onOperatorLeft(uint64,address)":{"params":{"operator":"The operator that left","serviceId":"The service ID"}},"onRegister(address,bytes)":{"details":"Validate operator requirements here (stake, reputation, etc.)","params":{"operator":"The operator's address","registrationInputs":"Custom registration data (blueprint-specific encoding)"}},"onReject(address,uint64)":{"params":{"operator":"The rejecting operator","requestId":"The request ID"}},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"details":"Validate service configuration, operator selection, payment amount","params":{"operators":"Requested operators","paymentAmount":"Payment amount","paymentAsset":"Payment token address (address(0) for native)","requestId":"The request ID","requestInputs":"Service configuration (blueprint-specific encoding)","requester":"Who is requesting the service","ttl":"Time-to-live for the service"}},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"params":{"blueprintId":"The blueprint ID","owner":"The service owner","permittedCallers":"Addresses allowed to submit jobs","requestId":"The original request ID","serviceId":"The new service ID","ttl":"Service time-to-live"}},"onServiceTermination(uint64,address)":{"params":{"owner":"The service owner","serviceId":"The service ID"}},"onSlash(uint64,bytes,uint8)":{"params":{"offender":"The slashed operator","serviceId":"The service ID","slashPercent":"Percentage slashed"}},"onUnappliedSlash(uint64,bytes,uint8)":{"details":"This is the dispute window - gather evidence, notify parties","params":{"offender":"The operator being slashed (encoded as bytes for flexibility)","serviceId":"The service ID","slashPercent":"Percentage of stake to slash"}},"onUnregister(address)":{"params":{"operator":"The operator's address"}},"onUpdatePreferences(address,bytes)":{"params":{"newPreferences":"Updated preferences data","operator":"The operator's address"}},"queryDeveloperPaymentAddress(uint64)":{"details":"Override to route payments to different addresses per service","params":{"serviceId":"The service ID"},"returns":{"developerPaymentAddress":"Address to receive developer share"}},"queryDisputeOrigin(uint64)":{"details":"Override to allow custom dispute resolution","params":{"serviceId":"The service ID"},"returns":{"disputeOrigin":"Address that can dispute (default: this contract)"}},"queryIsPaymentAssetAllowed(uint64,address)":{"params":{"asset":"The payment asset address (address(0) for native)","serviceId":"The service ID"},"returns":{"isAllowed":"True if the asset can be used for payment"}},"querySlashingOrigin(uint64)":{"details":"Override to allow custom slashing authorities (dispute contracts, etc.)","params":{"serviceId":"The service ID"},"returns":{"slashingOrigin":"Address that can slash (default: this contract)"}},"requiresAggregation(uint64,uint8)":{"details":"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"True if BLS aggregation is required for this job"}}},"version":1},"userdoc":{"kind":"user","methods":{"canJoin(uint64,address)":{"notice":"Check if an operator can join a dynamic service"},"canLeave(uint64,address)":{"notice":"Check if an operator can leave a dynamic service"},"forceRemoveAllowsBelowMin(uint64)":{"notice":"Whether `forceRemoveOperator` may drop the service below `minOperators`."},"getAggregationThreshold(uint64,uint8)":{"notice":"Get the aggregation threshold configuration for a job"},"getExitConfig(uint64)":{"notice":"Get the exit configuration for operator departures"},"getHeartbeatInterval(uint64)":{"notice":"Get the heartbeat interval for a service"},"getHeartbeatThreshold(uint64)":{"notice":"Get the heartbeat threshold for a service"},"getMinOperatorStake()":{"notice":"Get the minimum stake required for operators to register for this blueprint"},"getNonPaymentTerminationPolicy(uint64)":{"notice":"Get non-payment termination policy for subscription services"},"getRequiredResultCount(uint64,uint8)":{"notice":"Get the number of results required to complete a job"},"getSlashingWindow(uint64)":{"notice":"Get the slashing window for a service"},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Called when an aggregated job result is submitted"},"onApprove(address,uint64,uint8)":{"notice":"Called when an operator approves a service request"},"onBlueprintCreated(uint64,address,address)":{"notice":"Called when blueprint is created"},"onExitCanceled(uint64,address)":{"notice":"Called when an operator cancels their scheduled exit"},"onExitScheduled(uint64,address,uint64)":{"notice":"Called when an operator schedules their exit from a service"},"onJobCall(uint64,uint8,uint64,bytes)":{"notice":"Called when a job is submitted"},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"notice":"Called when an operator submits a job result"},"onOperatorJoined(uint64,address,uint16)":{"notice":"Called after an operator successfully joins a service"},"onOperatorLeft(uint64,address)":{"notice":"Called after an operator successfully leaves a service"},"onRegister(address,bytes)":{"notice":"Called when an operator registers to this blueprint"},"onReject(address,uint64)":{"notice":"Called when an operator rejects a service request"},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"notice":"Called when a service is requested"},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"notice":"Called when service becomes active (all operators approved)"},"onServiceTermination(uint64,address)":{"notice":"Called when service is terminated"},"onSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is finalized and applied"},"onUnappliedSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is queued but not yet applied"},"onUnregister(address)":{"notice":"Called when an operator unregisters from this blueprint"},"onUpdatePreferences(address,bytes)":{"notice":"Called when an operator updates their preferences (RPC address, etc.)"},"queryDeveloperPaymentAddress(uint64)":{"notice":"Get the developer payment address for a service"},"queryDisputeOrigin(uint64)":{"notice":"Query the account authorized to dispute slashes"},"queryIsPaymentAssetAllowed(uint64,address)":{"notice":"Check if a payment asset is allowed for this blueprint"},"querySlashingOrigin(uint64)":{"notice":"Query the account authorized to propose slashes for a service"},"requiresAggregation(uint64,uint8)":{"notice":"Check if a job requires BLS aggregated results"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IBlueprintServiceManager.sol":"IBlueprintServiceManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IBlueprintServiceManager.sol":{"keccak256":"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4","urls":["bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483","dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q"],"license":"MIT"}},"version":1},"id":139} \ No newline at end of file diff --git a/bindings/abi/IMultiAssetDelegation.json b/bindings/abi/IMultiAssetDelegation.json index b68a6f1a..3be92668 100644 --- a/bindings/abi/IMultiAssetDelegation.json +++ b/bindings/abi/IMultiAssetDelegation.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"addBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addBlueprintToDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"advanceRound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositERC20WithLock","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWithLock","inputs":[{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"disableAsset","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAssetWithAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstakeAndWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeOperatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAssetConfig","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.AssetConfig","components":[{"name":"enabled","type":"bool","internalType":"bool"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegationBlueprints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getDelegationMode","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.DelegationMode"}],"stateMutability":"view"},{"type":"function","name":"getDelegations","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondInfoDelegator[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"}]}],"stateMutability":"view"},{"type":"function","name":"getDeposit","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Deposit","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"delegatedAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getLocks","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.LockInfo[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"multiplier","type":"uint8","internalType":"enum Types.LockMultiplier"},{"name":"expiryBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlueprints","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatorCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegators","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorMetadata","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorMetadata","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"delegationCount","type":"uint32","internalType":"uint32"},{"name":"status","type":"uint8","internalType":"enum Types.OperatorStatus"},{"name":"leavingRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorRewardPool","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRewardPool","components":[{"name":"totalShares","type":"uint256","internalType":"uint256"},{"name":"totalAssets","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorSelfStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingCommissionChange","inputs":[],"outputs":[{"name":"pendingBps","type":"uint16","internalType":"uint16"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPendingUnstakes","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondLessRequest[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"slashFactorSnapshot","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingWithdrawals","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.WithdrawRequest[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getTotalDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseStake","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"increaseStakeWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorActive","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"meetsStakeRequirement","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minOperatorStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAt","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previewDelegatorUnstakeShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"registerOperatorWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintFromDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescueTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"scheduleDelegatorUnstake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleOperatorUnstake","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDelays","inputs":[{"name":"delegationBondLessDelay","type":"uint64","internalType":"uint64"},{"name":"leaveDelegatorsDelay","type":"uint64","internalType":"uint64"},{"name":"leaveOperatorsDelay","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationMode","inputs":[{"name":"mode","type":"uint8","internalType":"enum Types.DelegationMode"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationWhitelist","inputs":[{"name":"delegators","type":"address[]","internalType":"address[]"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorBondToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorCommission","inputs":[{"name":"bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequireAdapters","inputs":[{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTangle","inputs":[{"name":"tangle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForBlueprint","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForService","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterRegistered","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterRemoved","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetDisabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetEnabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"minOperatorStake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minDelegation","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequireAdaptersUpdated","inputs":[{"name":"required","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoundAdvanced","inputs":[{"name":"round","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","addBlueprintForOperator(address,uint64)":"b9c04c1b","addBlueprintToDelegation(uint256,uint64)":"23cc2700","addSlasher(address)":"68a9f19c","advanceRound()":"1ba9998b","canDelegate(address,address)":"2aa81239","cancelCommissionChange()":"dc71ef30","completeLeaving()":"d1736ba7","currentRound()":"8a19c8bc","delegate(address,uint256)":"026e402b","delegateWithOptions(address,address,uint256,uint8,uint64[])":"fd7d3dbc","delegationBondLessDelay()":"ba05bbf5","deposit()":"d0e30db0","depositAndDelegate(address)":"461cc23b","depositAndDelegateWithOptions(address,address,uint256,uint8,uint64[])":"fbec4861","depositERC20(address,uint256)":"97feb926","depositERC20WithLock(address,uint256,uint8)":"cb15038b","depositWithLock(uint8)":"f38c7c4e","disableAsset(address)":"70807528","enableAsset(address,uint256,uint256,uint256,uint16)":"354ebef9","enableAssetWithAdapter(address,address,uint256,uint256,uint256,uint16)":"f0b52bb4","executeCommissionChange()":"46c9b454","executeDelegatorUnstake()":"007910d0","executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":"bf690206","executeOperatorUnstake()":"b0dfce06","executeWithdraw()":"f8fd9795","getAssetConfig(address)":"6ec3ab67","getDelegation(address,address)":"15049a5a","getDelegationBlueprints(address,uint256)":"7b9996c5","getDelegationMode(address)":"7bed797d","getDelegations(address)":"31cc13ba","getDeposit(address,address)":"c35082a9","getLocks(address,address)":"0c8833ce","getOperatorBlueprints(address)":"dc972ccc","getOperatorDelegatedStake(address)":"8c5b4ae7","getOperatorDelegatedStakeForAsset(address,(uint8,address))":"20e1b202","getOperatorDelegatorCount(address)":"486398c3","getOperatorDelegators(address)":"a299e298","getOperatorMetadata(address)":"2ee663b8","getOperatorRewardPool(address)":"03587c1d","getOperatorSelfStake(address)":"d673e0b9","getOperatorStake(address)":"e4e88de8","getOperatorStakeForAsset(address,(uint8,address))":"3501b458","getPendingCommissionChange()":"c6b7a813","getPendingUnstakes(address)":"5722d512","getPendingWithdrawals(address)":"f340c0d0","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getTotalDelegation(address)":"fc5e7e09","increaseStake()":"d9e257ef","increaseStakeWithAsset(address,uint256)":"e5e27b6a","isOperator(address)":"6d70f7ae","isOperatorActive(address)":"eb473533","isSlasher(address)":"57601c5d","isWhitelisted(address,address)":"b6b35272","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","meetsStakeRequirement(address,uint256)":"f46913bb","minOperatorStake()":"d775cb61","operatorAt(uint256)":"26142335","operatorBondToken()":"0f157fb9","operatorCommissionBps()":"32273f61","operatorCount()":"7c6f3158","pause()":"8456cb59","previewDelegatorUnstakeShares(address,address,uint256)":"71ed20b6","registerAdapter(address,address)":"d655b92a","registerOperator()":"2acde098","registerOperatorWithAsset(address,uint256)":"e0a5825b","removeAdapter(address)":"585cd34b","removeBlueprintForOperator(address,uint64)":"d106de35","removeBlueprintFromDelegation(uint256,uint64)":"859caa18","removeSlasher(address)":"aac6aa9c","rescueTokens(address,address,uint256)":"cea9d26f","rewardsManager()":"defe2053","roundDuration()":"f7cb789a","scheduleDelegatorUnstake(address,address,uint256)":"fc8a91af","scheduleOperatorUnstake(uint256)":"44aff252","scheduleWithdraw(address,uint256)":"e1ee4bcc","serviceFeeDistributor()":"2e40f7fb","setDelays(uint64,uint64,uint64)":"03780211","setDelegationMode(uint8)":"7202f76a","setDelegationWhitelist(address[],bool)":"c353c1f6","setOperatorBondToken(address)":"84f5ef65","setOperatorCommission(uint16)":"f3c4d8a0","setRequireAdapters(bool)":"7b76fe5e","setRewardsManager(address)":"0a8ddc5e","setServiceFeeDistributor(address)":"fbcc7b3d","setTangle(address)":"bf5274a7","slash(address,uint64,uint16,bytes32)":"ff38b049","slashForBlueprint(address,uint64,uint64,uint16,bytes32)":"614b1d9b","slashForService(address,uint64,uint64,((uint8,address),uint16)[],uint16,bytes32)":"675b3c43","snapshotOperator(address)":"cadd550c","startLeaving()":"87703550","undelegate(address,uint256)":"4d99dd16","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AdapterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AssetDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"}],\"name\":\"AssetEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"RequireAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"}],\"name\":\"RoundAdvanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintToDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"addSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"advanceRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"canDelegate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"completeLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"delegateWithOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"depositAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"depositAndDelegateWithOptions\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositERC20WithLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositWithLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAssetWithAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"executeDelegatorUnstakeAndWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getDelegationBlueprints\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegationMode\",\"outputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.BondInfoDelegator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeposit\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegatedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Deposit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"multiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"expiryBlock\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.LockInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlueprints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorDelegatedStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"delegationCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"leavingRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRewardPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorRewardPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingCommissionChange\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"pendingBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingUnstakes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"slashFactorSnapshot\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BondLessRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingWithdrawals\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.WithdrawRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getTotalDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseStakeWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSlasher\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"meetsStakeRequirement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"operatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"previewDelegatorUnstakeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"registerAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerOperatorWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintFromDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"removeSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"delegationBondLessDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveDelegatorsDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveOperatorsDelay\",\"type\":\"uint64\"}],\"name\":\"setDelays\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setDelegationMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"delegators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setDelegationWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setOperatorBondToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"setRequireAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setRewardsManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tangle\",\"type\":\"address\"}],\"name\":\"setTangle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForBlueprint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForService\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"snapshotOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"INTERFACE STRUCTURE: This interface is intentionally comprehensive to maintain backward compatibility. Logically, it can be viewed as composed of these segments: - Operator Functions: registration, staking, blueprint management - Deposit Functions: native/ERC20 deposits with optional locks - Delegation Functions: delegate/undelegate with blueprint selection - Slashing: slash functions and related queries - Asset Management: enable/disable assets, adapters - View Functions: read-only queries for state - Admin Functions: protocol configuration Future versions may split into focused sub-interfaces (e.g., IOperatorManager, IDepositManager, IDelegationManager) for better composability.\",\"kind\":\"dev\",\"methods\":{\"canDelegate(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if delegation is allowed\"}},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"details\":\"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.\",\"params\":{\"operator\":\"Operator to unstake from\",\"receiver\":\"Recipient of the withdrawn assets\",\"requestedRound\":\"Round in which the unstake was scheduled\",\"shares\":\"Shares to unstake (as stored in the underlying bond-less request)\",\"token\":\"Token address (address(0) for native)\"},\"returns\":{\"amount\":\"Actual amount returned (after exchange-rate adjustments)\"}},\"getDelegationMode(address)\":{\"params\":{\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"The current delegation mode\"}},\"isWhitelisted(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if whitelisted\"}},\"setDelegationMode(uint8)\":{\"params\":{\"mode\":\"Delegation mode: Disabled (0), Whitelist (1), or Open (2)\"}},\"setDelegationWhitelist(address[],bool)\":{\"params\":{\"approved\":\"True to approve, false to revoke\",\"delegators\":\"Array of delegator addresses to update\"}}},\"title\":\"IMultiAssetDelegation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canDelegate(address,address)\":{\"notice\":\"Check if delegator can delegate to operator\"},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"notice\":\"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`.\"},\"getDelegationMode(address)\":{\"notice\":\"Get operator's delegation mode\"},\"getOperatorRewardPool(address)\":{\"notice\":\"Get the operator's reward pool for the bond asset\"},\"isWhitelisted(address,address)\":{\"notice\":\"Check if delegator is whitelisted\"},\"setDelegationMode(uint8)\":{\"notice\":\"Set delegation mode for the operator\"},\"setDelegationWhitelist(address[],bool)\":{\"notice\":\"Update whitelist for the operator (batch)\"}},\"notice\":\"Full interface for the multi-asset staking contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IMultiAssetDelegation.sol\":\"IMultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMultiAssetDelegation.sol\":{\"keccak256\":\"0x46ffd71a3c9f7e812a495b71b65a434e855da52b4ddde58873b6ef150e0be691\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f99c68304f8d1e66634e5169f96e2ca4590afdfa0c4fa604bef8b56412849773\",\"dweb:/ipfs/QmVFUqx7TT7NN5wm4f9PKXaRq1E4DSoyeHQHitRUkFbhJd\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7\",\"dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c\",\"dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67\",\"dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0\",\"dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d\",\"dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"adapter","type":"address","indexed":true}],"type":"event","name":"AdapterRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AdapterRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AssetDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"minOperatorStake","type":"uint256","indexed":false},{"internalType":"uint256","name":"minDelegation","type":"uint256","indexed":false}],"type":"event","name":"AssetEnabled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"bool","name":"required","type":"bool","indexed":false}],"type":"event","name":"RequireAdaptersUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64","indexed":true}],"type":"event","name":"RoundAdvanced","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintToDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSlasher"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"advanceRound"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"canDelegate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"completeLeaving"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"delegateWithOptions"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"payable","type":"function","name":"depositAndDelegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"payable","type":"function","name":"depositAndDelegateWithOptions"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20WithLock"},{"inputs":[{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"payable","type":"function","name":"depositWithLock"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAssetWithAdapter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstake"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstakeAndWithdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeOperatorUnstake"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeWithdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetConfig","outputs":[{"internalType":"struct Types.AssetConfig","name":"","type":"tuple","components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDelegationBlueprints","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegationMode","outputs":[{"internalType":"enum Types.DelegationMode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegations","outputs":[{"internalType":"struct Types.BondInfoDelegator[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposit","outputs":[{"internalType":"struct Types.Deposit","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"delegatedAmount","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getLocks","outputs":[{"internalType":"struct Types.LockInfo[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"multiplier","type":"uint8"},{"internalType":"uint64","name":"expiryBlock","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlueprints","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorMetadata","outputs":[{"internalType":"struct Types.OperatorMetadata","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint32","name":"delegationCount","type":"uint32"},{"internalType":"enum Types.OperatorStatus","name":"status","type":"uint8"},{"internalType":"uint64","name":"leavingRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRewardPool","outputs":[{"internalType":"struct Types.OperatorRewardPool","name":"","type":"tuple","components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPendingCommissionChange","outputs":[{"internalType":"uint16","name":"pendingBps","type":"uint16"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingUnstakes","outputs":[{"internalType":"struct Types.BondLessRequest[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint256","name":"slashFactorSnapshot","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingWithdrawals","outputs":[{"internalType":"struct Types.WithdrawRequest[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalDelegation","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"increaseStake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseStakeWithAsset"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSlasher","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"}],"stateMutability":"view","type":"function","name":"meetsStakeRequirement","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDelegatorUnstakeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAdapter"},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAdapter"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintFromDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSlasher"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rescueTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleDelegatorUnstake"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleOperatorUnstake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"delegationBondLessDelay","type":"uint64"},{"internalType":"uint64","name":"leaveDelegatorsDelay","type":"uint64"},{"internalType":"uint64","name":"leaveOperatorsDelay","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDelays"},{"inputs":[{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationMode"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationWhitelist"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorBondToken"},{"inputs":[{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorCommission"},{"inputs":[{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRequireAdapters"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsManager"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"address","name":"tangle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTangle"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForBlueprint","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForService","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"snapshotOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startLeaving"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"undelegate"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"canDelegate(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if delegation is allowed"}},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"details":"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.","params":{"operator":"Operator to unstake from","receiver":"Recipient of the withdrawn assets","requestedRound":"Round in which the unstake was scheduled","shares":"Shares to unstake (as stored in the underlying bond-less request)","token":"Token address (address(0) for native)"},"returns":{"amount":"Actual amount returned (after exchange-rate adjustments)"}},"getDelegationMode(address)":{"params":{"operator":"Operator address"},"returns":{"_0":"The current delegation mode"}},"isWhitelisted(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if whitelisted"}},"setDelegationMode(uint8)":{"params":{"mode":"Delegation mode: Disabled (0), Whitelist (1), or Open (2)"}},"setDelegationWhitelist(address[],bool)":{"params":{"approved":"True to approve, false to revoke","delegators":"Array of delegator addresses to update"}}},"version":1},"userdoc":{"kind":"user","methods":{"canDelegate(address,address)":{"notice":"Check if delegator can delegate to operator"},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"notice":"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`."},"getDelegationMode(address)":{"notice":"Get operator's delegation mode"},"getOperatorRewardPool(address)":{"notice":"Get the operator's reward pool for the bond asset"},"isWhitelisted(address,address)":{"notice":"Check if delegator is whitelisted"},"setDelegationMode(uint8)":{"notice":"Set delegation mode for the operator"},"setDelegationWhitelist(address[],bool)":{"notice":"Update whitelist for the operator (batch)"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IMultiAssetDelegation.sol":"IMultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMultiAssetDelegation.sol":{"keccak256":"0x46ffd71a3c9f7e812a495b71b65a434e855da52b4ddde58873b6ef150e0be691","urls":["bzz-raw://f99c68304f8d1e66634e5169f96e2ca4590afdfa0c4fa604bef8b56412849773","dweb:/ipfs/QmVFUqx7TT7NN5wm4f9PKXaRq1E4DSoyeHQHitRUkFbhJd"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d","urls":["bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7","dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267","urls":["bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c","dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5","urls":["bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67","dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8","urls":["bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0","dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae","urls":["bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d","dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os"],"license":"MIT"}},"version":1},"id":118} \ No newline at end of file +{"abi":[{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"addBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addBlueprintToDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"advanceRound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositERC20WithLock","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWithLock","inputs":[{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"disableAsset","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAssetWithAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstakeAndWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeOperatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAssetConfig","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.AssetConfig","components":[{"name":"enabled","type":"bool","internalType":"bool"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegationBlueprints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getDelegationMode","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.DelegationMode"}],"stateMutability":"view"},{"type":"function","name":"getDelegations","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondInfoDelegator[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"}]}],"stateMutability":"view"},{"type":"function","name":"getDeposit","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Deposit","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"delegatedAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getLocks","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.LockInfo[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"multiplier","type":"uint8","internalType":"enum Types.LockMultiplier"},{"name":"expiryBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlueprints","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatorCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegators","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorMetadata","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorMetadata","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"delegationCount","type":"uint32","internalType":"uint32"},{"name":"status","type":"uint8","internalType":"enum Types.OperatorStatus"},{"name":"leavingRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorRewardPool","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRewardPool","components":[{"name":"totalShares","type":"uint256","internalType":"uint256"},{"name":"totalAssets","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorSelfStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingCommissionChange","inputs":[],"outputs":[{"name":"pendingBps","type":"uint16","internalType":"uint16"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPendingUnstakes","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondLessRequest[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"slashFactorSnapshot","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingWithdrawals","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.WithdrawRequest[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getTotalDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseStake","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"increaseStakeWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorActive","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"meetsStakeRequirement","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minOperatorStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAt","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previewDelegatorUnstakeShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"registerOperatorWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintFromDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescueTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"scheduleDelegatorUnstake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleOperatorUnstake","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDelays","inputs":[{"name":"delegationBondLessDelay","type":"uint64","internalType":"uint64"},{"name":"leaveDelegatorsDelay","type":"uint64","internalType":"uint64"},{"name":"leaveOperatorsDelay","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationMode","inputs":[{"name":"mode","type":"uint8","internalType":"enum Types.DelegationMode"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationWhitelist","inputs":[{"name":"delegators","type":"address[]","internalType":"address[]"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorBondToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorCommission","inputs":[{"name":"bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequireAdapters","inputs":[{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTangle","inputs":[{"name":"tangle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForBlueprint","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForService","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterRegistered","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterRemoved","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetDisabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetEnabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"minOperatorStake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minDelegation","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequireAdaptersUpdated","inputs":[{"name":"required","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoundAdvanced","inputs":[{"name":"round","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","addBlueprintForOperator(address,uint64)":"b9c04c1b","addBlueprintToDelegation(uint256,uint64)":"23cc2700","addSlasher(address)":"68a9f19c","advanceRound()":"1ba9998b","canDelegate(address,address)":"2aa81239","cancelCommissionChange()":"dc71ef30","completeLeaving()":"d1736ba7","currentRound()":"8a19c8bc","delegate(address,uint256)":"026e402b","delegateWithOptions(address,address,uint256,uint8,uint64[])":"fd7d3dbc","delegationBondLessDelay()":"ba05bbf5","deposit()":"d0e30db0","depositAndDelegate(address)":"461cc23b","depositAndDelegateWithOptions(address,address,uint256,uint8,uint64[])":"fbec4861","depositERC20(address,uint256)":"97feb926","depositERC20WithLock(address,uint256,uint8)":"cb15038b","depositWithLock(uint8)":"f38c7c4e","disableAsset(address)":"70807528","enableAsset(address,uint256,uint256,uint256,uint16)":"354ebef9","enableAssetWithAdapter(address,address,uint256,uint256,uint256,uint16)":"f0b52bb4","executeCommissionChange()":"46c9b454","executeDelegatorUnstake()":"007910d0","executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":"bf690206","executeOperatorUnstake()":"b0dfce06","executeWithdraw()":"f8fd9795","getAssetConfig(address)":"6ec3ab67","getDelegation(address,address)":"15049a5a","getDelegationBlueprints(address,uint256)":"7b9996c5","getDelegationMode(address)":"7bed797d","getDelegations(address)":"31cc13ba","getDeposit(address,address)":"c35082a9","getLocks(address,address)":"0c8833ce","getOperatorBlueprints(address)":"dc972ccc","getOperatorDelegatedStake(address)":"8c5b4ae7","getOperatorDelegatedStakeForAsset(address,(uint8,address))":"20e1b202","getOperatorDelegatorCount(address)":"486398c3","getOperatorDelegators(address)":"a299e298","getOperatorMetadata(address)":"2ee663b8","getOperatorRewardPool(address)":"03587c1d","getOperatorSelfStake(address)":"d673e0b9","getOperatorStake(address)":"e4e88de8","getOperatorStakeForAsset(address,(uint8,address))":"3501b458","getPendingCommissionChange()":"c6b7a813","getPendingUnstakes(address)":"5722d512","getPendingWithdrawals(address)":"f340c0d0","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getTotalDelegation(address)":"fc5e7e09","increaseStake()":"d9e257ef","increaseStakeWithAsset(address,uint256)":"e5e27b6a","isOperator(address)":"6d70f7ae","isOperatorActive(address)":"eb473533","isSlasher(address)":"57601c5d","isWhitelisted(address,address)":"b6b35272","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","meetsStakeRequirement(address,uint256)":"f46913bb","minOperatorStake()":"d775cb61","operatorAt(uint256)":"26142335","operatorBondToken()":"0f157fb9","operatorCommissionBps()":"32273f61","operatorCount()":"7c6f3158","pause()":"8456cb59","previewDelegatorUnstakeShares(address,address,uint256)":"71ed20b6","registerAdapter(address,address)":"d655b92a","registerOperator()":"2acde098","registerOperatorWithAsset(address,uint256)":"e0a5825b","removeAdapter(address)":"585cd34b","removeBlueprintForOperator(address,uint64)":"d106de35","removeBlueprintFromDelegation(uint256,uint64)":"859caa18","removeSlasher(address)":"aac6aa9c","rescueTokens(address,address,uint256)":"cea9d26f","rewardsManager()":"defe2053","roundDuration()":"f7cb789a","scheduleDelegatorUnstake(address,address,uint256)":"fc8a91af","scheduleOperatorUnstake(uint256)":"44aff252","scheduleWithdraw(address,uint256)":"e1ee4bcc","serviceFeeDistributor()":"2e40f7fb","setDelays(uint64,uint64,uint64)":"03780211","setDelegationMode(uint8)":"7202f76a","setDelegationWhitelist(address[],bool)":"c353c1f6","setOperatorBondToken(address)":"84f5ef65","setOperatorCommission(uint16)":"f3c4d8a0","setRequireAdapters(bool)":"7b76fe5e","setRewardsManager(address)":"0a8ddc5e","setServiceFeeDistributor(address)":"fbcc7b3d","setTangle(address)":"bf5274a7","slash(address,uint64,uint16,bytes32)":"ff38b049","slashForBlueprint(address,uint64,uint64,uint16,bytes32)":"614b1d9b","slashForService(address,uint64,uint64,((uint8,address),uint16)[],uint16,bytes32)":"675b3c43","snapshotOperator(address)":"cadd550c","startLeaving()":"87703550","undelegate(address,uint256)":"4d99dd16","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AdapterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AssetDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"}],\"name\":\"AssetEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"RequireAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"}],\"name\":\"RoundAdvanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintToDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"addSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"advanceRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"canDelegate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"completeLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"delegateWithOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"depositAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"depositAndDelegateWithOptions\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositERC20WithLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositWithLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAssetWithAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"executeDelegatorUnstakeAndWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getDelegationBlueprints\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegationMode\",\"outputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.BondInfoDelegator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeposit\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegatedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Deposit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"multiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"expiryBlock\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.LockInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlueprints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorDelegatedStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"delegationCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"leavingRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRewardPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorRewardPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingCommissionChange\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"pendingBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingUnstakes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"slashFactorSnapshot\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BondLessRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingWithdrawals\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.WithdrawRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getTotalDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseStakeWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSlasher\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"meetsStakeRequirement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"operatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"previewDelegatorUnstakeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"registerAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerOperatorWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintFromDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"removeSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"delegationBondLessDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveDelegatorsDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveOperatorsDelay\",\"type\":\"uint64\"}],\"name\":\"setDelays\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setDelegationMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"delegators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setDelegationWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setOperatorBondToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"setRequireAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setRewardsManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tangle\",\"type\":\"address\"}],\"name\":\"setTangle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForBlueprint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForService\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"snapshotOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"INTERFACE STRUCTURE: This interface is intentionally comprehensive to maintain backward compatibility. Logically, it can be viewed as composed of these segments: - Operator Functions: registration, staking, blueprint management - Deposit Functions: native/ERC20 deposits with optional locks - Delegation Functions: delegate/undelegate with blueprint selection - Slashing: slash functions and related queries - Asset Management: enable/disable assets, adapters - View Functions: read-only queries for state - Admin Functions: protocol configuration Future versions may split into focused sub-interfaces (e.g., IOperatorManager, IDepositManager, IDelegationManager) for better composability.\",\"kind\":\"dev\",\"methods\":{\"canDelegate(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if delegation is allowed\"}},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"details\":\"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.\",\"params\":{\"operator\":\"Operator to unstake from\",\"receiver\":\"Recipient of the withdrawn assets\",\"requestedRound\":\"Round in which the unstake was scheduled\",\"shares\":\"Shares to unstake (as stored in the underlying bond-less request)\",\"token\":\"Token address (address(0) for native)\"},\"returns\":{\"amount\":\"Actual amount returned (after exchange-rate adjustments)\"}},\"getDelegationMode(address)\":{\"params\":{\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"The current delegation mode\"}},\"isWhitelisted(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if whitelisted\"}},\"setDelegationMode(uint8)\":{\"params\":{\"mode\":\"Delegation mode: Disabled (0), Whitelist (1), or Open (2)\"}},\"setDelegationWhitelist(address[],bool)\":{\"params\":{\"approved\":\"True to approve, false to revoke\",\"delegators\":\"Array of delegator addresses to update\"}}},\"title\":\"IMultiAssetDelegation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canDelegate(address,address)\":{\"notice\":\"Check if delegator can delegate to operator\"},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"notice\":\"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`.\"},\"getDelegationMode(address)\":{\"notice\":\"Get operator's delegation mode\"},\"getOperatorRewardPool(address)\":{\"notice\":\"Get the operator's reward pool for the bond asset\"},\"isWhitelisted(address,address)\":{\"notice\":\"Check if delegator is whitelisted\"},\"setDelegationMode(uint8)\":{\"notice\":\"Set delegation mode for the operator\"},\"setDelegationWhitelist(address[],bool)\":{\"notice\":\"Update whitelist for the operator (batch)\"}},\"notice\":\"Full interface for the multi-asset staking contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IMultiAssetDelegation.sol\":\"IMultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMultiAssetDelegation.sol\":{\"keccak256\":\"0x46ffd71a3c9f7e812a495b71b65a434e855da52b4ddde58873b6ef150e0be691\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f99c68304f8d1e66634e5169f96e2ca4590afdfa0c4fa604bef8b56412849773\",\"dweb:/ipfs/QmVFUqx7TT7NN5wm4f9PKXaRq1E4DSoyeHQHitRUkFbhJd\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7\",\"dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c\",\"dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67\",\"dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0\",\"dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d\",\"dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"adapter","type":"address","indexed":true}],"type":"event","name":"AdapterRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AdapterRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AssetDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"minOperatorStake","type":"uint256","indexed":false},{"internalType":"uint256","name":"minDelegation","type":"uint256","indexed":false}],"type":"event","name":"AssetEnabled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"bool","name":"required","type":"bool","indexed":false}],"type":"event","name":"RequireAdaptersUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64","indexed":true}],"type":"event","name":"RoundAdvanced","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintToDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSlasher"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"advanceRound"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"canDelegate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"completeLeaving"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"delegateWithOptions"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"payable","type":"function","name":"depositAndDelegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"payable","type":"function","name":"depositAndDelegateWithOptions"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20WithLock"},{"inputs":[{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"payable","type":"function","name":"depositWithLock"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAssetWithAdapter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstake"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstakeAndWithdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeOperatorUnstake"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeWithdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetConfig","outputs":[{"internalType":"struct Types.AssetConfig","name":"","type":"tuple","components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDelegationBlueprints","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegationMode","outputs":[{"internalType":"enum Types.DelegationMode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegations","outputs":[{"internalType":"struct Types.BondInfoDelegator[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposit","outputs":[{"internalType":"struct Types.Deposit","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"delegatedAmount","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getLocks","outputs":[{"internalType":"struct Types.LockInfo[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"multiplier","type":"uint8"},{"internalType":"uint64","name":"expiryBlock","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlueprints","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorMetadata","outputs":[{"internalType":"struct Types.OperatorMetadata","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint32","name":"delegationCount","type":"uint32"},{"internalType":"enum Types.OperatorStatus","name":"status","type":"uint8"},{"internalType":"uint64","name":"leavingRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRewardPool","outputs":[{"internalType":"struct Types.OperatorRewardPool","name":"","type":"tuple","components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPendingCommissionChange","outputs":[{"internalType":"uint16","name":"pendingBps","type":"uint16"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingUnstakes","outputs":[{"internalType":"struct Types.BondLessRequest[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint256","name":"slashFactorSnapshot","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingWithdrawals","outputs":[{"internalType":"struct Types.WithdrawRequest[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalDelegation","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"increaseStake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseStakeWithAsset"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSlasher","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"}],"stateMutability":"view","type":"function","name":"meetsStakeRequirement","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDelegatorUnstakeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAdapter"},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAdapter"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintFromDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSlasher"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rescueTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleDelegatorUnstake"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleOperatorUnstake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"delegationBondLessDelay","type":"uint64"},{"internalType":"uint64","name":"leaveDelegatorsDelay","type":"uint64"},{"internalType":"uint64","name":"leaveOperatorsDelay","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDelays"},{"inputs":[{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationMode"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationWhitelist"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorBondToken"},{"inputs":[{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorCommission"},{"inputs":[{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRequireAdapters"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsManager"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"address","name":"tangle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTangle"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForBlueprint","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForService","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"snapshotOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startLeaving"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"undelegate"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"canDelegate(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if delegation is allowed"}},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"details":"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.","params":{"operator":"Operator to unstake from","receiver":"Recipient of the withdrawn assets","requestedRound":"Round in which the unstake was scheduled","shares":"Shares to unstake (as stored in the underlying bond-less request)","token":"Token address (address(0) for native)"},"returns":{"amount":"Actual amount returned (after exchange-rate adjustments)"}},"getDelegationMode(address)":{"params":{"operator":"Operator address"},"returns":{"_0":"The current delegation mode"}},"isWhitelisted(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if whitelisted"}},"setDelegationMode(uint8)":{"params":{"mode":"Delegation mode: Disabled (0), Whitelist (1), or Open (2)"}},"setDelegationWhitelist(address[],bool)":{"params":{"approved":"True to approve, false to revoke","delegators":"Array of delegator addresses to update"}}},"version":1},"userdoc":{"kind":"user","methods":{"canDelegate(address,address)":{"notice":"Check if delegator can delegate to operator"},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"notice":"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`."},"getDelegationMode(address)":{"notice":"Get operator's delegation mode"},"getOperatorRewardPool(address)":{"notice":"Get the operator's reward pool for the bond asset"},"isWhitelisted(address,address)":{"notice":"Check if delegator is whitelisted"},"setDelegationMode(uint8)":{"notice":"Set delegation mode for the operator"},"setDelegationWhitelist(address[],bool)":{"notice":"Update whitelist for the operator (batch)"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IMultiAssetDelegation.sol":"IMultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMultiAssetDelegation.sol":{"keccak256":"0x46ffd71a3c9f7e812a495b71b65a434e855da52b4ddde58873b6ef150e0be691","urls":["bzz-raw://f99c68304f8d1e66634e5169f96e2ca4590afdfa0c4fa604bef8b56412849773","dweb:/ipfs/QmVFUqx7TT7NN5wm4f9PKXaRq1E4DSoyeHQHitRUkFbhJd"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d","urls":["bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7","dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267","urls":["bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c","dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5","urls":["bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67","dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8","urls":["bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0","dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae","urls":["bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d","dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os"],"license":"MIT"}},"version":1},"id":145} \ No newline at end of file diff --git a/bindings/abi/ITangle.json b/bindings/abi/ITangle.json index df0524f5..57b7dc71 100644 --- a/bindings/abi/ITangle.json +++ b/bindings/abi/ITangle.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c\",\"dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0","urls":["bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c","dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c\",\"dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0","urls":["bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c","dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file diff --git a/bindings/abi/ITangleFull.json b/bindings/abi/ITangleFull.json index 6a43da42..58724aa5 100644 --- a/bindings/abi/ITangleFull.json +++ b/bindings/abi/ITangleFull.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c\",\"dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0","urls":["bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c","dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c\",\"dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0","urls":["bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c","dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file diff --git a/bindings/abi/ITangleSlashing.json b/bindings/abi/ITangleSlashing.json index 4bf95f32..b0a1a97d 100644 --- a/bindings/abi/ITangleSlashing.json +++ b/bindings/abi/ITangleSlashing.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","disputeSlash(uint64,string)":"77380c74","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","getExecutableSlashes(uint64,uint64)":"110f829b","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","pendingDisputeBondRefund(address)":"8c2f4ee4","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}}},\"title\":\"ITangleSlashing\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"}},\"notice\":\"Slashing interface for Tangle protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangleSlashing.sol\":\"ITangleSlashing\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"}],"devdoc":{"kind":"dev","methods":{"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangleSlashing.sol":"ITangleSlashing"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","disputeSlash(uint64,string)":"77380c74","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","getExecutableSlashes(uint64,uint64)":"110f829b","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","pendingDisputeBondRefund(address)":"8c2f4ee4","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}}},\"title\":\"ITangleSlashing\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"}},\"notice\":\"Slashing interface for Tangle protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangleSlashing.sol\":\"ITangleSlashing\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"}],"devdoc":{"kind":"dev","methods":{"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangleSlashing.sol":"ITangleSlashing"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file diff --git a/bindings/abi/MultiAssetDelegation.json b/bindings/abi/MultiAssetDelegation.json index 35efcce1..714ed14a 100644 --- a/bindings/abi/MultiAssetDelegation.json +++ b/bindings/abi/MultiAssetDelegation.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ASSET_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"BPS_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMISSION_CHANGE_DELAY","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TANGLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_ASSETS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_SHARES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"clearFacetSelectors","inputs":[{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"facetForSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAccumulatedDust","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAssetAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorSlashFactor","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"lostAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getSnapshot","inputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorSnapshot","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"totalDelegated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"nativeMinOperatorStake","type":"uint256","internalType":"uint256"},{"name":"nativeMinDelegation","type":"uint256","internalType":"uint256"},{"name":"_operatorCommissionBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastRoundAdvance","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nativeEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nextSlashId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerFacet","inputs":[{"name":"facet","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerFacetSelectors","inputs":[{"name":"facet","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requireAdapters","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"resetPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"slashHistory","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"DustAccumulated","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalDust","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DustSwept","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FacetRegistered","inputs":[{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FacetSelectorCleared","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"FacetSelectorSet","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorDelegationModeSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"mode","type":"uint8","indexed":false,"internalType":"enum Types.DelegationMode"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorWhitelistUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PendingSlashCountReset","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashDecremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashIncremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotAContract","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SelectorAlreadyRegistered","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"existingFacet","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523461003e5761001161004d565b610019610043565b61447c61030782396080518181816138a70152818161390c0152613abb015261447c90f35b610049565b60405190565b5f80fd5b61005561005f565b61005d61022a565b565b610067610069565b565b610071610073565b565b61007b61007d565b565b610085610087565b565b61008f610091565b565b61009961009b565b565b6100a36100a5565b565b6100ad6100af565b565b6100b76100b9565b565b6100c16100c3565b565b6100cb6100cd565b565b6100d56100d7565b565b6100df6100e1565b565b6100e961012d565b565b60018060a01b031690565b90565b61010d610108610112926100eb565b6100f6565b6100eb565b90565b61011e906100f9565b90565b61012a90610115565b90565b61013630610121565b608052565b60401c90565b60ff1690565b6101536101589161013b565b610141565b90565b6101659054610147565b90565b5f0190565b5f1c90565b60018060401b031690565b61018961018e9161016d565b610172565b90565b61019b905461017d565b90565b60018060401b031690565b5f1b90565b906101bf60018060401b03916101a9565b9181191691161790565b6101dd6101d86101e29261019e565b6100f6565b61019e565b90565b90565b906101fd6101f8610204926101c9565b6101e5565b82546101ae565b9055565b6102119061019e565b9052565b9190610228905f60208501940190610208565b565b6102326102e2565b61023d5f820161015b565b6102c65761024c5f8201610191565b61026461025e60018060401b0361019e565b9161019e565b0361026d575b50565b610280905f60018060401b0391016101e8565b60018060401b036102bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916102b4610043565b91829182610215565b0390a15f61026a565b5f63f92ee8a960e01b8152806102de60048201610168565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:144:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;1313:53;;;:::i;:::-;;;:::i;:::-;:::o;390:3323:87:-;;;:::i;:::-;:::o;593:16751:141:-;;;:::i;:::-;:::o;833:35158:148:-;;;:::i;:::-;:::o;807:15535:147:-;;;:::i;:::-;:::o;749:45049:139:-;;;:::i;:::-;:::o;622:19465:145:-;;;:::i;:::-;:::o;427:22555:140:-;;;:::i;:::-;:::o;1094:3411:65:-;;;:::i;:::-;:::o;701:3153:64:-;;;:::i;:::-;:::o;2090:6192:45:-;;;:::i;:::-;:::o;769:414:67:-;;;:::i;:::-;:::o;422:447:37:-;;;:::i;:::-;:::o;226:3116:0:-;;;:::i;:::-;:::o;688:505:62:-;;;:::i;:::-;:::o;1033:3847:144:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5611:55:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5611::o;1033:3847:144:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;7711:422:54:-;7859:26;;:::i;:::-;7900:15;;:1;:15;;:::i;:::-;7896:76;;7985:14;;:1;:14;;:::i;:::-;:34;;1033:3847:144;;;;;7985:34:54;:::i;:::-;;;:::i;:::-;;7981:146;;7711:422;;:::o;7981:146::-;8035:33;1033:3847:144;8035:14:54;1033:3847:144;;;;;8035:1:54;:14;:33;:::i;:::-;1033:3847:144;;;;;8087:29:54;;;;;:::i;:::-;;;;;;:::i;:::-;;;;7981:146;;;7896:76;7938:23;;;;;;;;;;;;:::i;:::-;;;;8737:170;8837:64;8737:170;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:144:-:0;;;;;;;;;-1:-1:-1;1033:3847:144;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;3981:30:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4797:70:148:-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;1033:3847:144:-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2014:52:140:-;2060:6;;;:::i;:::-;2014:52;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;5347:35:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2192:53:140:-;2239:6;;;:::i;:::-;2192:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1961:47:140:-;2002:6;;;:::i;:::-;1961:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4756:33:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;5194:72:148:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;3036:64:140;3075:25;3036:64;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2072:53:140:-;2119:6;;;:::i;:::-;2072:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3188:62:140:-;3226:24;3188:62;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2970:60:140:-;3007:23;2970:60;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;6608:25:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1751:48:140:-;1792:7;;;:::i;:::-;1751:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1566:44:140:-;1607:3;;;:::i;:::-;1566:44;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3785:26:140:-;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4917:45:148:-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5041:70:148:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1698:47:140:-;1738:7;;;:::i;:::-;1698:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2317:49:45:-;2362:4;;;:::i;:::-;2317:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3106:76:140:-;3151:31;3106:76;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2131:55:140:-;2180:6;;;:::i;:::-;2131:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1059:40:140:-;1095:4;;;:::i;:::-;1059:40;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:55:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;7488:27:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1616:42:140:-;1657:1;;;:::i;:::-;1616:42;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4559:37:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1805:50:140:-;1848:7;;;:::i;:::-;1805:50;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5528:55:140:-;5577:6;;;:::i;:::-;5528:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;4663:34:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2437:46:140:-;2479:4;;;:::i;:::-;2437:46;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1105:48:140:-;1147:6;;;:::i;:::-;1105:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1861:49:140:-;1902:8;;;:::i;:::-;1861:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3888:27:140:-;;;;;;:::i;:::-;;:::o;1033:3847:144:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;3443:202:45:-;3528:4;;:::i;:::-;3551:11;;:47;;3566:32;;;3551:47;:::i;:::-;;;:::i;:::-;;:87;;;;;3443:202;3544:94;;:::o;3551:87::-;3602:36;3626:11;;3602:36;:::i;:::-;3551:87;;;1033:3847:144;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;18896:223:140:-;19022:41;18896:223;19022:30;:41;18896:223;18986:7;;:::i;:::-;19022:20;;:30;:::i;:::-;:41;:::i;:::-;;:::i;:::-;19080:6;:11;;19090:1;19080:11;:::i;:::-;;;:::i;:::-;;:32;;;;19094:9;;;:::i;:::-;19080:32;19073:39;:::o;19080:32::-;;;1033:3847:144;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;986:179:87:-;1122:36;986:179;1122:36;986:179;;;:::i;:::-;1148:9;1122:36;:::i;:::-;;;:::i;:::-;986:179::o;1033:3847:144:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4759:191:45:-;4919:24;:14;:24;4759:191;4824:7;;:::i;:::-;4876:26;4919:8;4876:26;;:::i;:::-;4919:8;:14;:::i;:::-;:24;;:::i;:::-;4912:31;:::o;3149:76::-;;3217:1;3149:76;3202:4;5320:18;5333:4;5320:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5246:136::-;;5350:25;5246:136;5350:25;:::i;:::-;;5246:136::o;:::-;;;;;:::i;:::-;:::o;6348:245::-;;6441:18;:34;;6463:12;;:::i;:::-;6441:34;:::i;:::-;;;:::i;:::-;;6437:102;;6549:37;6561:4;6549:37;:::i;:::-;;6348:245::o;6437:102::-;6498:30;;;;;;;;;;;;:::i;:::-;;;;1033:3847:144;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;668:256:87;;;:::i;:::-;797:34;;:32;:22;813:5;797:22;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;867:12;797:34;;;;;668:256;766:65;860:5;867:12;:::i;:::-;895:22;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;668:256::o;797:34::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1033:3847:144:-;;;;;:::i;:::-;;;;;;;;;:::o;11796:122:147:-;11888:23;;11796:122;11862:7;;:::i;:::-;11888:16;;:23;:::i;:::-;;:::i;:::-;11881:30;:::o;2624:62:55:-;;2678:1;2624:62;;;:::i;:::-;2678:1;:::i;:::-;2624:62::o;4161:214::-;;4363:4;4161:214;4294:17;;;:::i;:::-;4363:4;:::i;:::-;4161:214::o;:::-;;;;;:::i;:::-;:::o;2892:72::-;2956:1;2892:72;;;:::i;:::-;2956:1;:::i;:::-;2892:72;:::o;1033:3847:144:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;763:114:17:-;811:66;;;:::i;:::-;763:114;:::o;3708:134:55:-;3803:32;;;:::i;:::-;3796:39;:::o;3708:134::-;3777:7;;;:::i;:::-;;:::i;:::-;3708:134;:::o;1033:3847:144:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:64:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;1033:3847:144:-;;;:::o;30628:117:148:-;30717:21;;30628:117;30692:6;;:::i;:::-;30717:11;;:21;:::i;:::-;;:::i;:::-;30710:28;:::o;31184:162::-;31301:38;31184:162;31301:28;:38;31184:162;31276:6;;:::i;:::-;31301:17;;:28;:::i;:::-;:38;:::i;:::-;;:::i;:::-;31294:45;:::o;1033:3847:144:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;17225:117:141:-;17314:21;;17225:117;17288:7;;:::i;:::-;17314:14;;:21;:::i;:::-;;:::i;:::-;17307:28;:::o;1560:129:87:-;1652:30;1560:129;1626:7;;:::i;:::-;1673:8;1652:30;:::i;:::-;1645:37;:::o;1033:3847:144:-;;;;;:::i;:::-;;;;;;;;;:::o;3732:207:45:-;3901:31;3732:207;3901:22;:14;:31;3732:207;3809:4;;:::i;:::-;3858:26;;;;:::i;:::-;3901:8;:14;:::i;:::-;:22;:31;:::i;:::-;;:::i;:::-;3894:38;:::o;7409:147:148:-;7513:36;;7409:147;7488:6;;:::i;:::-;7513:26;;:36;:::i;:::-;;:::i;:::-;7506:43;:::o;1033:3847:144:-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29116:783:148:-;;;;;29304:59;29332:31;29270:18;;:::i;:::-;29332:12;:22;:12;29345:8;29332:22;;:::i;:::-;:31;:::i;:::-;29304:59;:::i;:::-;29377:6;:12;;:6;:12;;:::i;:::-;:17;;29393:1;29377:17;:::i;:::-;;;:::i;:::-;;29373:31;;29500:9;29464:74;29500:9;29511:8;29521:16;;:6;:16;;:::i;:::-;29464:74;;:::i;:::-;29552:15;;:20;;29571:1;29552:20;:::i;:::-;;;:::i;:::-;;29548:34;;29676:25;;:6;:25;;:::i;:::-;:52;;29704:24;;:6;:24;;:::i;:::-;29676:52;:::i;:::-;;;:::i;:::-;;29672:221;;29116:783;;;:::o;29672:221::-;29842:40;29763:6;;;;:52;:6;29791:24;;29763:25;;29843:26;29763:6;:25;;:::i;:::-;29791:6;:24;;:::i;:::-;29763:52;;:::i;:::-;29843:26;;:::i;:::-;29873:9;;:::i;:::-;29842:40;;:::i;:::-;29672:221;;;;;29548:34;29581:1;;;;29574:8;29581:1;29574:8;:::i;:::-;;:::o;29373:31::-;29403:1;;;;;29396:8;29403:1;29396:8;:::i;:::-;;:::o;1033:3847:144:-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;30792:156:148:-;30903:38;30792:156;30910:22;:31;30792:156;30873:18;;:::i;:::-;30910:12;;:22;:::i;:::-;:31;:::i;:::-;30903:38;:::i;:::-;;:::o;1033:3847:144:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;33897:154:148:-;34012:32;33897:154;34019:15;:25;33897:154;33971:29;;:::i;:::-;34019:8;;:15;:::i;:::-;:25;:::i;:::-;34012:32;:::i;:::-;;:::o;31602:170::-;31723:42;31602:170;31723:32;:42;31602:170;31698:6;;:::i;:::-;31723:19;;:32;:::i;:::-;:42;:::i;:::-;;:::i;:::-;31716:49;:::o;1033:3847:144:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:54:-;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1033:3847:144;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1033:3847:144;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;826:56:71:-;876:6;;;:::i;:::-;826:56;:::o;876:6::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1071:52::-;1121:2;;;:::i;:::-;1071:52;:::o;1121:2::-;;;;:::o;:::-;;;1033:3847:144;1121:2:71;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1191:51::-;1240:2;;;:::i;:::-;1191:51;:::o;1648:1453:144:-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2003:18;;:::i;:::-;2023:5;1992:37;;;:::i;:::-;;2050:10;;:::i;:::-;2062:5;2039:29;;;:::i;:::-;;2089:18;;:::i;:::-;2109:5;2078:37;;;:::i;:::-;;2204:22;2236:1;2228:10;;;:::i;:::-;2192:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2181:59;;;:::i;:::-;2319:4;;2355:22;2406:19;2451:1;2483;2588:15;;;:::i;:::-;2581:23;;;:::i;:::-;2278:337;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2250:13;2264:10;2250:25;;;:::i;:::-;:365;;;;:::i;:::-;2641:4;2625:20;;;;:::i;:::-;2656:46;;;;:::i;:::-;2727:1;2712:16;;;:::i;:::-;;;;;:::i;:::-;2754:37;;:::i;:::-;2738:53;;;;:::i;:::-;2919:37;;:::i;:::-;2893:63;;;;:::i;:::-;2989:37;;:::i;:::-;2966:60;;;;:::i;:::-;3058:36;;:::i;:::-;3036:58;;;;:::i;:::-;1648:1453::o;:::-;;;;;;;:::i;:::-;:::o;3149:76:45:-;;3217:1;3149:76;3202:4;5737:18;5750:4;5737:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5662:138::-;;5767:26;5662:138;5767:26;:::i;:::-;;5662:138::o;:::-;;;;;:::i;:::-;:::o;1033:3847:144:-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;1220:285:87:-;;;;;;:::i;:::-;1343:13;1355:1;1343:13;:::i;:::-;1380:3;1358:1;:20;;1362:16;:9;;:16;;:::i;:::-;1358:20;:::i;:::-;;;:::i;:::-;;;;;1380:3;1422:9;:12;;;:9;;1432:1;1422:12;;:::i;:::-;;:::i;:::-;;:::i;:::-;1475;;:9;;1485:1;1475:12;;:::i;:::-;;:::i;:::-;1454:34;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1380:3;:::i;:::-;1343:13;;1358:20;;;;;1220:285::o;3149:76:45:-;;3217:1;3149:76;3202:4;4751:10:144;;:::i;:::-;3202:4:45;:::i;:::-;3217:1;:::i;:::-;3149:76::o;4660:218:144:-;4773:44;4812:5;4773:36;:26;4800:8;4773:36;;:::i;:::-;:44;:::i;:::-;4832:39;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;4660:218::o;:::-;;;;;:::i;:::-;:::o;4056:63::-;;:::i;1035:146:67:-;1111:4;;:::i;:::-;1134:11;:40;;1149:25;;;1134:40;:::i;:::-;;;:::i;:::-;;1127:47;:::o;3149:76:45:-;3202:4;3180:10:144;;:::i;:::-;3202:4:45;:::i;:::-;3149:76::o;3107:88:144:-;;;:::i;:::-;:::o;1033:3847::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;1894:602:87:-;;;1987:5;:19;;1996:10;2004:1;1996:10;:::i;:::-;1987:19;:::i;:::-;;;:::i;:::-;;1983:45;;2042:5;:17;:22;;2063:1;2042:22;:::i;:::-;;;:::i;:::-;;2038:54;;2108:13;2120:1;2108:13;:::i;:::-;2145:3;2123:1;:20;;2127:16;:9;:16;:::i;:::-;2123:20;:::i;:::-;;;:::i;:::-;;;;;2183:34;2204:12;;:9;2214:1;2204:12;;:::i;:::-;;:::i;:::-;2183:34;:::i;:::-;2235:8;:22;;2247:10;2255:1;2247:10;:::i;:::-;2235:22;:::i;:::-;;;:::i;:::-;;;:43;;;2145:3;2231:138;;2403:9;2145:3;2403:9;2417:5;2403:12;;:9;2413:1;2403:12;;:::i;:::-;;:::i;:::-;2417:5;;;:::i;:::-;2459:12;;:9;2469:1;2459:12;;:::i;:::-;;:::i;:::-;2473:5;2442:37;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2145:3;:::i;:::-;2108:13;;2231:138;2331:12;;:9;;:12;:::i;:::-;;:::i;:::-;2345:8;:::i;2235:43::-;2261:8;;:17;;2273:5;2261:17;:::i;:::-;;;:::i;:::-;;;2235:43;;2123:20;;;;;1894:602::o;2038:54::-;2086:5;;:::i;1983:45::-;;:::i;2787:177:45:-;2887:71;2787:177;:::o;4148:103::-;4231:12;4148:103;4231:12;;:::i;:::-;;;:::i;:::-;4148:103::o;7270:387::-;7347:4;;:::i;:::-;7396:26;;;:::i;:::-;7436:23;7437:22;7445:4;7451:7;7437:22;;:::i;:::-;7436:23;;:::i;:::-;7432:219;;;;7475:38;7509:4;7475:31;:22;:14;7509:4;;7475:1;:8;7484:4;7475:14;;:::i;:::-;:22;7498:7;7475:31;;:::i;:::-;:38;:::i;:::-;7550:7;7559:12;;:::i;:::-;7532:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;7593:4;7586:11;:::o;7432:219::-;7635:5;;;;7628:12;:::o;887:96:62:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7892:388:45:-;7970:4;;:::i;:::-;8019:26;;;:::i;:::-;8059:22;8067:4;8073:7;8059:22;;:::i;:::-;8055:219;;;;8097:39;8131:5;8097:31;:22;:14;8131:5;;8097:1;:8;8106:4;8097:14;;:::i;:::-;:22;8120:7;8097:31;;:::i;:::-;:39;:::i;:::-;8173:7;8182:12;;:::i;:::-;8155:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;8216:4;8209:11;:::o;8055:219::-;8258:5;;;;8251:12;:::o;1033:3847:144:-;;;;:::i;:::-;;:::o;4603:312:55:-;4675:13;4683:4;4675:13;:::i;:::-;:23;;4692:6;4675:23;:::i;:::-;;;:::i;:::-;;:120;;;;4603:312;4658:251;;4603:312::o;4658:251::-;4869:29;;;;;;;;;;;;:::i;:::-;;;;4675:120;4753:32;;;:::i;:::-;:42;;4789:6;4753:42;:::i;:::-;;;:::i;:::-;;;4675:120;;3149:76:45;;3202:4;4368:10:144;;:::i;:::-;3202:4:45;:::i;:::-;3149:76::o;4305:78:144:-;;;;:::i;:::-;:::o;1033:3847::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6057:538:55:-;;;6156:52;;:50;:36;6174:17;6156:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6057:538;6152:437;;;;;;;;;;;;;;6057:538::o;6152:437::-;6518:60;6560:17;6518:60;;;;;;;;;;;;;:::i;:::-;;;;6152:437;6250:4;;:40;;6258:32;;:::i;:::-;6250:40;:::i;:::-;;;:::i;:::-;;6246:120;;6428:4;6409:17;;;6428:4;:::i;:::-;6152:437;;6246:120;6317:34;6346:4;6317:34;;;;;;;;;;;;;:::i;:::-;;;;6156:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5032:213;5098:13;5106:4;5098:13;:::i;:::-;:23;;5115:6;5098:23;:::i;:::-;;;:::i;:::-;;5094:145;;5032:213::o;5094:145::-;5199:29;4869;;;5199;;;;;;;;:::i;:::-;;;;1147:162:64;1237:66;1147:162;:::o;1033:3847:144:-;;;;;:::i;:::-;;;;;;;;;:::o;3201:139::-;3306:27;;3201:139;3280:7;;:::i;:::-;3306:17;;:27;:::i;:::-;;:::i;:::-;3299:34;:::o;1033:3847::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29905:667:148:-;;;;30118:71;30166:23;30083:19;;:::i;:::-;30166:12;;:23;:::i;:::-;30118:71;:::i;:::-;30227:11;:18;:11;:18;:::i;:::-;30272:1;30260:13;30272:1;30260:13;:::i;:::-;;30275:1;:21;;30279:17;30275:21;:::i;:::-;;;:::i;:::-;;;;;30313:50;30349:14;:11;30361:1;30349:14;;:::i;:::-;;30313:50;:::i;:::-;30381:10;;:1;:10;;:::i;:::-;:22;;30395:8;30381:22;:::i;:::-;;;:::i;:::-;;:58;;;30260:13;30377:120;;30260:13;30538:3;;;;:::i;:::-;30260:13;;30377:120;30538:3;30474:1;;:8;;30459:23;30474:1;:8;;:::i;:::-;30459:23;;:::i;:::-;30377:120;;;;30381:58;30418:1;30407:19;;30418:7;:1;:7;30407:19;:::i;:::-;;:::i;:::-;:32;;30430:9;30407:32;:::i;:::-;;;:::i;:::-;;30381:58;;30275:21;;;;;;;;29905:667::o;8737:170:54:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2970:67:55:-;;;:::i;:::-;:::o;6893:76:54:-;;;:::i;:::-;:::o;3231:65:45:-;;;:::i;:::-;:::o;6893:76:54:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:64:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:54:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2684:111:65:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1033:3847:144:-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;16492:204:140:-;16561:7;;:::i;:::-;16664:5;16653:35;16676:11;;16664:10;;:5;:10;;:::i;:::-;16676:5;:11;;:::i;:::-;16653:35;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16643:46;;;;:::i;:::-;;;:::i;:::-;;16636:53;:::o;1033:3847:144:-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;3484:118::-;3561:34;3568:27;3561:34;3484:118;3568:17;:27;:::i;:::-;3561:34;:::i;:::-;3484:118::o;1695:193:87:-;1758:29;1033:3847:144;;;1779:7:87;;;1758:29;:::i;:::-;1801:5;:19;;1810:10;1818:1;1810:10;:::i;:::-;1801:19;:::i;:::-;;;:::i;:::-;;1875:5;1797:56;1033:3847:144;;;1845:7:87;;;;:::i;3608:107:144:-;3678:30;;;;;;;;;;;;:::i;:::-;;;;3721:127;3805:36;3721:127;3805:36;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3854:196::-;3976:67;;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3346:132::-;3436:27;:35;3346:132;3436:17;;:27;:::i;:::-;:35;:::i;:::-;3346:132::o;1033:3847::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4381:197:45:-;;4468:23;4469:22;4477:4;4483:7;4469:22;;:::i;:::-;4468:23;;:::i;:::-;4464:108;;4381:197;;:::o;4464:108::-;4514:47;;;;;;;;;;;;;;:::i;:::-;;;;1441:138:17;1493:7;;:::i;:::-;1546:19;1519:53;;:47;1546:19;;:::i;:::-;1519:47;:::i;:::-;:53;;:::i;:::-;1512:60;:::o;2264:344::-;;2374:17;;;:::i;:::-;2425;2407:36;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2458:11;:4;:11;:::i;:::-;:15;;2472:1;2458:15;:::i;:::-;;;:::i;:::-;;2454:148;;;;2489:53;2518:17;2489:53;:::i;:::-;;2454:148;2264:344::o;2454:148::-;;;;;:::i;:::-;;;7084:141:54;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;;;;;;;;;;;:::i;:::-;;;;6893:76;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:64:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;6893:76:54:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1910:40:65:-;1949:1;;;:::i;:::-;1910:40;:::o;2801:183::-;2954:23;2916:28;;:::i;:::-;2954:9;2966:11;;:::i;:::-;2954:1;:9;:23;:::i;:::-;2801:183::o;:::-;;;:::i;:::-;:::o;1033:3847:144:-;;;;;;;;;;;;;:::i;:::-;:::o;4161:138::-;4250:42;4161:138;4250:42;;;;;;;;;;;;;:::i;:::-;;;;2694:388:87;2750:326;2694:388;;2750:326;;;;;;;;;;;;;;;;;;;;;;;;1899:163:32;;:::o;1671:281:17:-;1748:17;:29;:34;;1781:1;1748:34;:::i;:::-;;;:::i;:::-;;1744:119;;1872:73;1928:17;1872:53;:47;1899:19;;:::i;:::-;1872:47;:::i;:::-;:53;:73;:::i;:::-;1671:281::o;1744:119::-;1805:47;1834:17;1805:47;6518:60:55;;;;;;1805:47:17;;;;;;:::i;:::-;;;;6113:122;6163:9;:13;;6175:1;6163:13;:::i;:::-;;;:::i;:::-;;6159:70;;6113:122::o;6159:70::-;6199:19;;;;;;;;;;;;:::i;:::-;;;;1033:3847:144;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;3900:253:27;4049:25;3900:253;4091:55;3900:253;3983:12;;:::i;:::-;4049:6;;4069:4;4049:25;;;;;;;;;;;:::i;:::-;4118:6;4126:7;4135:10;4091:55;;:::i;:::-;4084:62;:::o;8487:120:54:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;2395:183:65:-;2499:73;2395:183;:::o;4421:582:27:-;;4593:8;4421:582;4565:12;;:::i;:::-;4594:7;4593:8;;:::i;:::-;4589:408;;;;4625:10;;:::i;4589:408::-;4841:17;:10;:17;:::i;:::-;:22;;4862:1;4841:22;:::i;:::-;;;:::i;:::-;;:49;;;4589:408;4837:119;;4976:10;4969:17;:::o;4837:119::-;4917:24;4934:6;4917:24;;;;;;;;;;;;;:::i;:::-;;;;4841:49;4867:6;;:18;:23;;4889:1;4867:23;:::i;:::-;;;:::i;:::-;;4841:49;;5543:487;5674:17;:10;:17;:::i;:::-;:21;;5694:1;5674:21;:::i;:::-;;;:::i;:::-;;5670:354;;;;5799:158;;;;;;5670:354;5994:19;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{},"immutableReferences":{"16397":[{"start":14503,"length":32},{"start":14604,"length":32},{"start":15035,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","ASSET_MANAGER_ROLE()":"a4b32de8","BPS_DENOMINATOR()":"e1a45218","COMMISSION_CHANGE_DELAY()":"d45ff582","DEFAULT_ADMIN_ROLE()":"a217fddf","LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MIN_LOCK_AMOUNT()":"dd764abf","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","PRECISION()":"aaf5eb68","SLASHER_ROLE()":"5095af64","TANGLE_ROLE()":"602356e3","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","VIRTUAL_ASSETS()":"b6608409","VIRTUAL_SHARES()":"88c47f68","blueprintSlashCount(uint64,address)":"4e9c929a","clearFacetSelectors(bytes4[])":"e07dec29","currentRound()":"8a19c8bc","delegationBondLessDelay()":"ba05bbf5","facetForSelector(bytes4)":"90837ff4","getAccumulatedDust(address)":"49147411","getAssetAdapter(address)":"8a7fe60f","getOperatorSlashFactor(address,bytes32)":"12d91c88","getPendingSlashCount(address)":"9480e4dd","getRoleAdmin(bytes32)":"248a9ca3","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getSnapshot(uint64,address)":"c07449e2","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,uint256,uint256,uint16)":"cbb6d6bd","lastRoundAdvance()":"05d64e38","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","nativeEnabled()":"77ab2cf3","nextSlashId(address)":"96085673","operatorCommissionBps()":"32273f61","paused()":"5c975abb","proxiableUUID()":"52d1902d","registerFacet(address)":"46d163aa","registerFacetSelectors(address,bytes4[])":"19e82e61","renounceRole(bytes32,address)":"36568abe","requireAdapters()":"b54b2b9e","resetPendingSlashCount(address,uint64)":"e27e05c1","revokeRole(bytes32,address)":"d547741f","roundDuration()":"f7cb789a","serviceSlashCount(uint64,address)":"9722f4b9","slashHistory(address,uint64)":"0aa8b110","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"existingFacet\",\"type\":\"address\"}],\"name\":\"SelectorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"UnknownSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDust\",\"type\":\"uint256\"}],\"name\":\"DustAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FacetSelectorCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"OperatorDelegationModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashCountReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashDecremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMISSION_CHANGE_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TANGLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_ASSETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_SHARES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blueprintSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"clearFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"facetForSelector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAccumulatedDust\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"}],\"name\":\"getOperatorSlashFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getPendingSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lostAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSnapshot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDelegated\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorSnapshot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_operatorCommissionBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundAdvance\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nextSlashId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"registerFacet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"registerFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requireAdapters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"resetPendingSlashCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"slashHistory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"L-18 FIX: Zero address provided - kept parameterless for backward compatibility Context is typically clear from the function that reverts\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"details\":\"Individual delegator amounts can be computed: shares * (oldRate - newRate) / PRECISION\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"params\":{\"assetHash\":\"Asset hash for the pool\",\"blueprintId\":\"The blueprint where violation occurred (0 for consensus/native slash)\",\"delegatorsSlashed\":\"Amount slashed from delegator pools (reduces totalAssets)\",\"exchangeRateAfter\":\"Exchange rate after slash (scaled by PRECISION)\",\"operator\":\"The slashed operator\",\"operatorSlashed\":\"Amount slashed from operator's self-stake\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"}},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"commitmentCount\":\"Number of asset commitments that were slashed\",\"operator\":\"The slashed operator\",\"serviceId\":\"The service where violation occurred\",\"totalSlashed\":\"Total amount slashed across all committed assets\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getAccumulatedDust(address)\":{\"params\":{\"token\":\"The token address (address(0) for native)\"},\"returns\":{\"_0\":\"The accumulated dust amount\"}},\"getAssetAdapter(address)\":{\"params\":{\"token\":\"Token address\"},\"returns\":{\"_0\":\"adapter Adapter address (or zero if none)\"}},\"getOperatorSlashFactor(address,bytes32)\":{\"details\":\"Returns PRECISION (1e18) if unset\"},\"getPendingSlashCount(address)\":{\"params\":{\"operator\":\"The operator to query\"},\"returns\":{\"_0\":\"count Number of pending slashes\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getSlashCountForBlueprint(uint64,address)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"operator\":\"The operator address\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in services of this blueprint\"}},\"getSlashCountForService(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in this service\"}},\"getSlashImpact(address,uint64,address)\":{\"params\":{\"delegator\":\"The delegator to check\",\"operator\":\"The operator that was slashed\",\"slashId\":\"The slash event ID\"},\"returns\":{\"lostAmount\":\"Approximate amount lost due to this slash\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,uint256,uint256,uint16)\":{\"params\":{\"_operatorCommissionBps\":\"Operator commission in basis points\",\"admin\":\"Admin address\",\"nativeMinDelegation\":\"Minimum delegation amount\",\"nativeMinOperatorStake\":\"Minimum stake for operators\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"resetPendingSlashCount(address,uint64)\":{\"details\":\"Admin-only recovery function for when count becomes inconsistent\",\"params\":{\"count\":\"The correct pending slash count\",\"operator\":\"The operator to reset\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"MultiAssetDelegation\",\"version\":1},\"userdoc\":{\"events\":{\"DustAccumulated(address,uint256,uint256)\":{\"notice\":\"Emitted when dust is accumulated from rounding\"},\"DustSwept(address,address,uint256)\":{\"notice\":\"Emitted when accumulated dust is swept to treasury\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when slash is recorded (for off-chain indexing of per-delegator impact)\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an operator and their delegators are slashed for an asset\"},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"notice\":\"Emitted when an operator is slashed for a specific service with per-asset commitments\"}},\"kind\":\"user\",\"methods\":{\"COMMISSION_CHANGE_DELAY()\":{\"notice\":\"Timelock delay for commission changes (7 days)\"},\"blueprintSlashCount(uint64,address)\":{\"notice\":\"Slash count per blueprint: blueprintId => operator => count\"},\"clearFacetSelectors(bytes4[])\":{\"notice\":\"Remove selectors from the router\"},\"currentRound()\":{\"notice\":\"Current round number\"},\"delegationBondLessDelay()\":{\"notice\":\"Delay for unstaking delegations (in rounds)\"},\"facetForSelector(bytes4)\":{\"notice\":\"Resolve the facet for a selector\"},\"getAccumulatedDust(address)\":{\"notice\":\"Get accumulated dust for a token\"},\"getAssetAdapter(address)\":{\"notice\":\"Get adapter for a token\"},\"getOperatorSlashFactor(address,bytes32)\":{\"notice\":\"Reserved getter for the historical slash factor (unused with share-based pools)\"},\"getPendingSlashCount(address)\":{\"notice\":\"Get pending slash count for an operator\"},\"getSlashCount(address)\":{\"notice\":\"Get total slashes for an operator\"},\"getSlashCountForBlueprint(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific blueprint\"},\"getSlashCountForService(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific service\"},\"getSlashImpact(address,uint64,address)\":{\"notice\":\"Calculate how much a delegator lost from a specific slash\"},\"getSlashRecord(address,uint64)\":{\"notice\":\"Get slash record details\"},\"getSnapshot(uint64,address)\":{\"notice\":\"Get snapshot for an operator at a specific round\"},\"initialize(address,uint256,uint256,uint16)\":{\"notice\":\"Initialize the contract\"},\"lastRoundAdvance()\":{\"notice\":\"Timestamp when the last round was advanced\"},\"leaveDelegatorsDelay()\":{\"notice\":\"Delay for delegator withdrawals (in rounds)\"},\"leaveOperatorsDelay()\":{\"notice\":\"Delay for operator exit (in rounds)\"},\"nativeEnabled()\":{\"notice\":\"Whether native asset is enabled\"},\"nextSlashId(address)\":{\"notice\":\"Next slash ID per operator\"},\"operatorCommissionBps()\":{\"notice\":\"Operator commission rate in basis points\"},\"registerFacet(address)\":{\"notice\":\"Register selectors exposed by a facet\"},\"registerFacetSelectors(address,bytes4[])\":{\"notice\":\"Register specific selectors for a facet\"},\"requireAdapters()\":{\"notice\":\"Whether to require adapters for all ERC20 deposits\"},\"resetPendingSlashCount(address,uint64)\":{\"notice\":\"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes\"},\"roundDuration()\":{\"notice\":\"Seconds per round (used for time-based rate limiting)\"},\"serviceSlashCount(uint64,address)\":{\"notice\":\"Slash count per service: serviceId => operator => count\"},\"slashHistory(address,uint64)\":{\"notice\":\"Slash history per operator: operator => slashId => record\"}},\"notice\":\"Router contract for multi-asset staking\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MultiAssetDelegation.sol\":\"MultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"src/config/ProtocolConfig.sol\":{\"keccak256\":\"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72\",\"dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C\"]},\"src/facets/FacetRouterBase.sol\":{\"keccak256\":\"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa\",\"dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD\"]},\"src/interfaces/IFacetSelectors.sol\":{\"keccak256\":\"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3\",\"dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7\",\"dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c\",\"dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV\"]},\"src/staking/DepositManager.sol\":{\"keccak256\":\"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8\",\"dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3\"]},\"src/staking/MultiAssetDelegation.sol\":{\"keccak256\":\"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2\",\"dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67\",\"dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0\",\"dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d\",\"dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os\"]},\"src/staking/adapters/IAssetAdapter.sol\":{\"keccak256\":\"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44\",\"dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"NotAContract"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"existingFacet","type":"address"}],"type":"error","name":"SelectorAlreadyRegistered"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"UnknownSelector"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalDust","type":"uint256","indexed":false}],"type":"event","name":"DustAccumulated","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DustSwept","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetRegistered","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"FacetSelectorCleared","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetSelectorSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8","indexed":false}],"type":"event","name":"OperatorDelegationModeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorWhitelistUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashCountReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashDecremented","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashIncremented","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMISSION_CHANGE_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TANGLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_ASSETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"blueprintSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"clearFacetSelectors"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetForSelector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAccumulatedDust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetAdapter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorSlashFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"lostAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSnapshot","outputs":[{"internalType":"struct Types.OperatorSnapshot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"totalDelegated","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"nativeMinOperatorStake","type":"uint256"},{"internalType":"uint256","name":"nativeMinDelegation","type":"uint256"},{"internalType":"uint16","name":"_operatorCommissionBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastRoundAdvance","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nextSlashId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerFacet"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"registerFacetSelectors"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"requireAdapters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"resetPendingSlashCount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"serviceSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"slashHistory","outputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getAccumulatedDust(address)":{"params":{"token":"The token address (address(0) for native)"},"returns":{"_0":"The accumulated dust amount"}},"getAssetAdapter(address)":{"params":{"token":"Token address"},"returns":{"_0":"adapter Adapter address (or zero if none)"}},"getOperatorSlashFactor(address,bytes32)":{"details":"Returns PRECISION (1e18) if unset"},"getPendingSlashCount(address)":{"params":{"operator":"The operator to query"},"returns":{"_0":"count Number of pending slashes"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getSlashCountForBlueprint(uint64,address)":{"params":{"blueprintId":"The blueprint ID","operator":"The operator address"},"returns":{"_0":"count Number of times operator was slashed in services of this blueprint"}},"getSlashCountForService(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"count Number of times operator was slashed in this service"}},"getSlashImpact(address,uint64,address)":{"params":{"delegator":"The delegator to check","operator":"The operator that was slashed","slashId":"The slash event ID"},"returns":{"lostAmount":"Approximate amount lost due to this slash"}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,uint256,uint256,uint16)":{"params":{"_operatorCommissionBps":"Operator commission in basis points","admin":"Admin address","nativeMinDelegation":"Minimum delegation amount","nativeMinOperatorStake":"Minimum stake for operators"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"resetPendingSlashCount(address,uint64)":{"details":"Admin-only recovery function for when count becomes inconsistent","params":{"count":"The correct pending slash count","operator":"The operator to reset"}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMISSION_CHANGE_DELAY()":{"notice":"Timelock delay for commission changes (7 days)"},"blueprintSlashCount(uint64,address)":{"notice":"Slash count per blueprint: blueprintId => operator => count"},"clearFacetSelectors(bytes4[])":{"notice":"Remove selectors from the router"},"currentRound()":{"notice":"Current round number"},"delegationBondLessDelay()":{"notice":"Delay for unstaking delegations (in rounds)"},"facetForSelector(bytes4)":{"notice":"Resolve the facet for a selector"},"getAccumulatedDust(address)":{"notice":"Get accumulated dust for a token"},"getAssetAdapter(address)":{"notice":"Get adapter for a token"},"getOperatorSlashFactor(address,bytes32)":{"notice":"Reserved getter for the historical slash factor (unused with share-based pools)"},"getPendingSlashCount(address)":{"notice":"Get pending slash count for an operator"},"getSlashCount(address)":{"notice":"Get total slashes for an operator"},"getSlashCountForBlueprint(uint64,address)":{"notice":"Get slash count for an operator in a specific blueprint"},"getSlashCountForService(uint64,address)":{"notice":"Get slash count for an operator in a specific service"},"getSlashImpact(address,uint64,address)":{"notice":"Calculate how much a delegator lost from a specific slash"},"getSlashRecord(address,uint64)":{"notice":"Get slash record details"},"getSnapshot(uint64,address)":{"notice":"Get snapshot for an operator at a specific round"},"initialize(address,uint256,uint256,uint16)":{"notice":"Initialize the contract"},"lastRoundAdvance()":{"notice":"Timestamp when the last round was advanced"},"leaveDelegatorsDelay()":{"notice":"Delay for delegator withdrawals (in rounds)"},"leaveOperatorsDelay()":{"notice":"Delay for operator exit (in rounds)"},"nativeEnabled()":{"notice":"Whether native asset is enabled"},"nextSlashId(address)":{"notice":"Next slash ID per operator"},"operatorCommissionBps()":{"notice":"Operator commission rate in basis points"},"registerFacet(address)":{"notice":"Register selectors exposed by a facet"},"registerFacetSelectors(address,bytes4[])":{"notice":"Register specific selectors for a facet"},"requireAdapters()":{"notice":"Whether to require adapters for all ERC20 deposits"},"resetPendingSlashCount(address,uint64)":{"notice":"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes"},"roundDuration()":{"notice":"Seconds per round (used for time-based rate limiting)"},"serviceSlashCount(uint64,address)":{"notice":"Slash count per service: serviceId => operator => count"},"slashHistory(address,uint64)":{"notice":"Slash history per operator: operator => slashId => record"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/MultiAssetDelegation.sol":"MultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"src/config/ProtocolConfig.sol":{"keccak256":"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c","urls":["bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72","dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C"],"license":"MIT"},"src/facets/FacetRouterBase.sol":{"keccak256":"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e","urls":["bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa","dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD"],"license":"MIT"},"src/interfaces/IFacetSelectors.sol":{"keccak256":"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4","urls":["bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3","dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d","urls":["bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7","dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267","urls":["bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c","dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV"],"license":"MIT"},"src/staking/DepositManager.sol":{"keccak256":"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248","urls":["bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8","dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3"],"license":"MIT"},"src/staking/MultiAssetDelegation.sol":{"keccak256":"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99","urls":["bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2","dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5","urls":["bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67","dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8","urls":["bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0","dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae","urls":["bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d","dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os"],"license":"MIT"},"src/staking/adapters/IAssetAdapter.sol":{"keccak256":"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061","urls":["bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44","dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW"],"license":"MIT"}},"version":1},"id":144} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ASSET_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"BPS_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMISSION_CHANGE_DELAY","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TANGLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_ASSETS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_SHARES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"clearFacetSelectors","inputs":[{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"facetForSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAccumulatedDust","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAssetAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorSlashFactor","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"lostAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getSnapshot","inputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorSnapshot","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"totalDelegated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"nativeMinOperatorStake","type":"uint256","internalType":"uint256"},{"name":"nativeMinDelegation","type":"uint256","internalType":"uint256"},{"name":"_operatorCommissionBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastRoundAdvance","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nativeEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nextSlashId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerFacet","inputs":[{"name":"facet","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerFacetSelectors","inputs":[{"name":"facet","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requireAdapters","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"resetPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"slashHistory","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"DustAccumulated","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalDust","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DustSwept","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FacetRegistered","inputs":[{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FacetSelectorCleared","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"FacetSelectorSet","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorDelegationModeSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"mode","type":"uint8","indexed":false,"internalType":"enum Types.DelegationMode"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorWhitelistUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PendingSlashCountReset","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashDecremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashIncremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotAContract","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SelectorAlreadyRegistered","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"existingFacet","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523461003e5761001161004d565b610019610043565b61447c61030782396080518181816138a70152818161390c0152613abb015261447c90f35b610049565b60405190565b5f80fd5b61005561005f565b61005d61022a565b565b610067610069565b565b610071610073565b565b61007b61007d565b565b610085610087565b565b61008f610091565b565b61009961009b565b565b6100a36100a5565b565b6100ad6100af565b565b6100b76100b9565b565b6100c16100c3565b565b6100cb6100cd565b565b6100d56100d7565b565b6100df6100e1565b565b6100e961012d565b565b60018060a01b031690565b90565b61010d610108610112926100eb565b6100f6565b6100eb565b90565b61011e906100f9565b90565b61012a90610115565b90565b61013630610121565b608052565b60401c90565b60ff1690565b6101536101589161013b565b610141565b90565b6101659054610147565b90565b5f0190565b5f1c90565b60018060401b031690565b61018961018e9161016d565b610172565b90565b61019b905461017d565b90565b60018060401b031690565b5f1b90565b906101bf60018060401b03916101a9565b9181191691161790565b6101dd6101d86101e29261019e565b6100f6565b61019e565b90565b90565b906101fd6101f8610204926101c9565b6101e5565b82546101ae565b9055565b6102119061019e565b9052565b9190610228905f60208501940190610208565b565b6102326102e2565b61023d5f820161015b565b6102c65761024c5f8201610191565b61026461025e60018060401b0361019e565b9161019e565b0361026d575b50565b610280905f60018060401b0391016101e8565b60018060401b036102bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916102b4610043565b91829182610215565b0390a15f61026a565b5f63f92ee8a960e01b8152806102de60048201610168565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:181:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;1313:53;;;:::i;:::-;;;:::i;:::-;:::o;390:3323:111:-;;;:::i;:::-;:::o;593:16751:178:-;;;:::i;:::-;:::o;833:35158:185:-;;;:::i;:::-;:::o;807:15535:184:-;;;:::i;:::-;:::o;749:45049:176:-;;;:::i;:::-;:::o;622:19465:182:-;;;:::i;:::-;:::o;427:22555:177:-;;;:::i;:::-;:::o;1094:3411:69:-;;;:::i;:::-;:::o;701:3153:68:-;;;:::i;:::-;:::o;2090:6192:48:-;;;:::i;:::-;:::o;769:414:71:-;;;:::i;:::-;:::o;422:447:40:-;;;:::i;:::-;:::o;226:3116:1:-;;;:::i;:::-;:::o;688:505:66:-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5611:59:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5611::o;1033:3847:181:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;7711:422:58:-;7859:26;;:::i;:::-;7900:15;;:1;:15;;:::i;:::-;7896:76;;7985:14;;:1;:14;;:::i;:::-;:34;;1033:3847:181;;;;;7985:34:58;:::i;:::-;;;:::i;:::-;;7981:146;;7711:422;;:::o;7981:146::-;8035:33;1033:3847:181;8035:14:58;1033:3847:181;;;;;8035:1:58;:14;:33;:::i;:::-;1033:3847:181;;;;;8087:29:58;;;;;:::i;:::-;;;;;;:::i;:::-;;;;7981:146;;;7896:76;7938:23;;;;;;;;;;;;:::i;:::-;;;;8737:170;8837:64;8737:170;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:181:-:0;;;;;;;;;-1:-1:-1;1033:3847:181;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;3981:30:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4797:70:185:-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;1033:3847:181:-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2014:52:177:-;2060:6;;;:::i;:::-;2014:52;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;5347:35:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2192:53:177:-;2239:6;;;:::i;:::-;2192:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1961:47:177:-;2002:6;;;:::i;:::-;1961:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4756:33:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;5194:72:185:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;3036:64:177;3075:25;3036:64;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2072:53:177:-;2119:6;;;:::i;:::-;2072:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3188:62:177:-;3226:24;3188:62;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2970:60:177:-;3007:23;2970:60;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;6608:25:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1751:48:177:-;1792:7;;;:::i;:::-;1751:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1566:44:177:-;1607:3;;;:::i;:::-;1566:44;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3785:26:177:-;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4917:45:185:-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5041:70:185:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1698:47:177:-;1738:7;;;:::i;:::-;1698:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2317:49:48:-;2362:4;;;:::i;:::-;2317:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3106:76:177:-;3151:31;3106:76;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2131:55:177:-;2180:6;;;:::i;:::-;2131:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1059:40:177:-;1095:4;;;:::i;:::-;1059:40;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:59:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;7488:27:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1616:42:177:-;1657:1;;;:::i;:::-;1616:42;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4559:37:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1805:50:177:-;1848:7;;;:::i;:::-;1805:50;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5528:55:177:-;5577:6;;;:::i;:::-;5528:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;4663:34:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2437:46:177:-;2479:4;;;:::i;:::-;2437:46;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1105:48:177:-;1147:6;;;:::i;:::-;1105:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1861:49:177:-;1902:8;;;:::i;:::-;1861:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3888:27:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;3443:202:48:-;3528:4;;:::i;:::-;3551:11;;:47;;3566:32;;;3551:47;:::i;:::-;;;:::i;:::-;;:87;;;;;3443:202;3544:94;;:::o;3551:87::-;3602:36;3626:11;;3602:36;:::i;:::-;3551:87;;;1033:3847:181;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;18896:223:177:-;19022:41;18896:223;19022:30;:41;18896:223;18986:7;;:::i;:::-;19022:20;;:30;:::i;:::-;:41;:::i;:::-;;:::i;:::-;19080:6;:11;;19090:1;19080:11;:::i;:::-;;;:::i;:::-;;:32;;;;19094:9;;;:::i;:::-;19080:32;19073:39;:::o;19080:32::-;;;1033:3847:181;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;986:179:111:-;1122:36;986:179;1122:36;986:179;;;:::i;:::-;1148:9;1122:36;:::i;:::-;;;:::i;:::-;986:179::o;1033:3847:181:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4759:191:48:-;4919:24;:14;:24;4759:191;4824:7;;:::i;:::-;4876:26;4919:8;4876:26;;:::i;:::-;4919:8;:14;:::i;:::-;:24;;:::i;:::-;4912:31;:::o;3149:76::-;;3217:1;3149:76;3202:4;5320:18;5333:4;5320:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5246:136::-;;5350:25;5246:136;5350:25;:::i;:::-;;5246:136::o;:::-;;;;;:::i;:::-;:::o;6348:245::-;;6441:18;:34;;6463:12;;:::i;:::-;6441:34;:::i;:::-;;;:::i;:::-;;6437:102;;6549:37;6561:4;6549:37;:::i;:::-;;6348:245::o;6437:102::-;6498:30;;;;;;;;;;;;:::i;:::-;;;;1033:3847:181;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;668:256:111;;;:::i;:::-;797:34;;:32;:22;813:5;797:22;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;867:12;797:34;;;;;668:256;766:65;860:5;867:12;:::i;:::-;895:22;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;668:256::o;797:34::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;11796:122:184:-;11888:23;;11796:122;11862:7;;:::i;:::-;11888:16;;:23;:::i;:::-;;:::i;:::-;11881:30;:::o;2624:62:59:-;;2678:1;2624:62;;;:::i;:::-;2678:1;:::i;:::-;2624:62::o;4161:214::-;;4363:4;4161:214;4294:17;;;:::i;:::-;4363:4;:::i;:::-;4161:214::o;:::-;;;;;:::i;:::-;:::o;2892:72::-;2956:1;2892:72;;;:::i;:::-;2956:1;:::i;:::-;2892:72;:::o;1033:3847:181:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;763:114:19:-;811:66;;;:::i;:::-;763:114;:::o;3708:134:59:-;3803:32;;;:::i;:::-;3796:39;:::o;3708:134::-;3777:7;;;:::i;:::-;;:::i;:::-;3708:134;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:68:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;1033:3847:181:-;;;:::o;30628:117:185:-;30717:21;;30628:117;30692:6;;:::i;:::-;30717:11;;:21;:::i;:::-;;:::i;:::-;30710:28;:::o;31184:162::-;31301:38;31184:162;31301:28;:38;31184:162;31276:6;;:::i;:::-;31301:17;;:28;:::i;:::-;:38;:::i;:::-;;:::i;:::-;31294:45;:::o;1033:3847:181:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;17225:117:178:-;17314:21;;17225:117;17288:7;;:::i;:::-;17314:14;;:21;:::i;:::-;;:::i;:::-;17307:28;:::o;1560:129:111:-;1652:30;1560:129;1626:7;;:::i;:::-;1673:8;1652:30;:::i;:::-;1645:37;:::o;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;3732:207:48:-;3901:31;3732:207;3901:22;:14;:31;3732:207;3809:4;;:::i;:::-;3858:26;;;;:::i;:::-;3901:8;:14;:::i;:::-;:22;:31;:::i;:::-;;:::i;:::-;3894:38;:::o;7409:147:185:-;7513:36;;7409:147;7488:6;;:::i;:::-;7513:26;;:36;:::i;:::-;;:::i;:::-;7506:43;:::o;1033:3847:181:-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29116:783:185:-;;;;;29304:59;29332:31;29270:18;;:::i;:::-;29332:12;:22;:12;29345:8;29332:22;;:::i;:::-;:31;:::i;:::-;29304:59;:::i;:::-;29377:6;:12;;:6;:12;;:::i;:::-;:17;;29393:1;29377:17;:::i;:::-;;;:::i;:::-;;29373:31;;29500:9;29464:74;29500:9;29511:8;29521:16;;:6;:16;;:::i;:::-;29464:74;;:::i;:::-;29552:15;;:20;;29571:1;29552:20;:::i;:::-;;;:::i;:::-;;29548:34;;29676:25;;:6;:25;;:::i;:::-;:52;;29704:24;;:6;:24;;:::i;:::-;29676:52;:::i;:::-;;;:::i;:::-;;29672:221;;29116:783;;;:::o;29672:221::-;29842:40;29763:6;;;;:52;:6;29791:24;;29763:25;;29843:26;29763:6;:25;;:::i;:::-;29791:6;:24;;:::i;:::-;29763:52;;:::i;:::-;29843:26;;:::i;:::-;29873:9;;:::i;:::-;29842:40;;:::i;:::-;29672:221;;;;;29548:34;29581:1;;;;29574:8;29581:1;29574:8;:::i;:::-;;:::o;29373:31::-;29403:1;;;;;29396:8;29403:1;29396:8;:::i;:::-;;:::o;1033:3847:181:-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;30792:156:185:-;30903:38;30792:156;30910:22;:31;30792:156;30873:18;;:::i;:::-;30910:12;;:22;:::i;:::-;:31;:::i;:::-;30903:38;:::i;:::-;;:::o;1033:3847:181:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;33897:154:185:-;34012:32;33897:154;34019:15;:25;33897:154;33971:29;;:::i;:::-;34019:8;;:15;:::i;:::-;:25;:::i;:::-;34012:32;:::i;:::-;;:::o;31602:170::-;31723:42;31602:170;31723:32;:42;31602:170;31698:6;;:::i;:::-;31723:19;;:32;:::i;:::-;:42;:::i;:::-;;:::i;:::-;31716:49;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:58:-;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1033:3847:181;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1033:3847:181;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;826:56:93:-;876:6;;;:::i;:::-;826:56;:::o;876:6::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1071:52::-;1121:2;;;:::i;:::-;1071:52;:::o;1121:2::-;;;;:::o;:::-;;;1033:3847:181;1121:2:93;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1191:51::-;1240:2;;;:::i;:::-;1191:51;:::o;1648:1453:181:-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2003:18;;:::i;:::-;2023:5;1992:37;;;:::i;:::-;;2050:10;;:::i;:::-;2062:5;2039:29;;;:::i;:::-;;2089:18;;:::i;:::-;2109:5;2078:37;;;:::i;:::-;;2204:22;2236:1;2228:10;;;:::i;:::-;2192:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2181:59;;;:::i;:::-;2319:4;;2355:22;2406:19;2451:1;2483;2588:15;;;:::i;:::-;2581:23;;;:::i;:::-;2278:337;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2250:13;2264:10;2250:25;;;:::i;:::-;:365;;;;:::i;:::-;2641:4;2625:20;;;;:::i;:::-;2656:46;;;;:::i;:::-;2727:1;2712:16;;;:::i;:::-;;;;;:::i;:::-;2754:37;;:::i;:::-;2738:53;;;;:::i;:::-;2919:37;;:::i;:::-;2893:63;;;;:::i;:::-;2989:37;;:::i;:::-;2966:60;;;;:::i;:::-;3058:36;;:::i;:::-;3036:58;;;;:::i;:::-;1648:1453::o;:::-;;;;;;;:::i;:::-;:::o;3149:76:48:-;;3217:1;3149:76;3202:4;5737:18;5750:4;5737:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5662:138::-;;5767:26;5662:138;5767:26;:::i;:::-;;5662:138::o;:::-;;;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;1220:285:111:-;;;;;;:::i;:::-;1343:13;1355:1;1343:13;:::i;:::-;1380:3;1358:1;:20;;1362:16;:9;;:16;;:::i;:::-;1358:20;:::i;:::-;;;:::i;:::-;;;;;1380:3;1422:9;:12;;;:9;;1432:1;1422:12;;:::i;:::-;;:::i;:::-;;:::i;:::-;1475;;:9;;1485:1;1475:12;;:::i;:::-;;:::i;:::-;1454:34;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1380:3;:::i;:::-;1343:13;;1358:20;;;;;1220:285::o;3149:76:48:-;;3217:1;3149:76;3202:4;4751:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3217:1;:::i;:::-;3149:76::o;4660:218:181:-;4773:44;4812:5;4773:36;:26;4800:8;4773:36;;:::i;:::-;:44;:::i;:::-;4832:39;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;4660:218::o;:::-;;;;;:::i;:::-;:::o;4056:63::-;;:::i;1035:146:71:-;1111:4;;:::i;:::-;1134:11;:40;;1149:25;;;1134:40;:::i;:::-;;;:::i;:::-;;1127:47;:::o;3149:76:48:-;3202:4;3180:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3149:76::o;3107:88:181:-;;;:::i;:::-;:::o;1033:3847::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;1894:602:111:-;;;1987:5;:19;;1996:10;2004:1;1996:10;:::i;:::-;1987:19;:::i;:::-;;;:::i;:::-;;1983:45;;2042:5;:17;:22;;2063:1;2042:22;:::i;:::-;;;:::i;:::-;;2038:54;;2108:13;2120:1;2108:13;:::i;:::-;2145:3;2123:1;:20;;2127:16;:9;:16;:::i;:::-;2123:20;:::i;:::-;;;:::i;:::-;;;;;2183:34;2204:12;;:9;2214:1;2204:12;;:::i;:::-;;:::i;:::-;2183:34;:::i;:::-;2235:8;:22;;2247:10;2255:1;2247:10;:::i;:::-;2235:22;:::i;:::-;;;:::i;:::-;;;:43;;;2145:3;2231:138;;2403:9;2145:3;2403:9;2417:5;2403:12;;:9;2413:1;2403:12;;:::i;:::-;;:::i;:::-;2417:5;;;:::i;:::-;2459:12;;:9;2469:1;2459:12;;:::i;:::-;;:::i;:::-;2473:5;2442:37;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2145:3;:::i;:::-;2108:13;;2231:138;2331:12;;:9;;:12;:::i;:::-;;:::i;:::-;2345:8;:::i;2235:43::-;2261:8;;:17;;2273:5;2261:17;:::i;:::-;;;:::i;:::-;;;2235:43;;2123:20;;;;;1894:602::o;2038:54::-;2086:5;;:::i;1983:45::-;;:::i;2787:177:48:-;2887:71;2787:177;:::o;4148:103::-;4231:12;4148:103;4231:12;;:::i;:::-;;;:::i;:::-;4148:103::o;7270:387::-;7347:4;;:::i;:::-;7396:26;;;:::i;:::-;7436:23;7437:22;7445:4;7451:7;7437:22;;:::i;:::-;7436:23;;:::i;:::-;7432:219;;;;7475:38;7509:4;7475:31;:22;:14;7509:4;;7475:1;:8;7484:4;7475:14;;:::i;:::-;:22;7498:7;7475:31;;:::i;:::-;:38;:::i;:::-;7550:7;7559:12;;:::i;:::-;7532:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;7593:4;7586:11;:::o;7432:219::-;7635:5;;;;7628:12;:::o;887:96:66:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7892:388:48:-;7970:4;;:::i;:::-;8019:26;;;:::i;:::-;8059:22;8067:4;8073:7;8059:22;;:::i;:::-;8055:219;;;;8097:39;8131:5;8097:31;:22;:14;8131:5;;8097:1;:8;8106:4;8097:14;;:::i;:::-;:22;8120:7;8097:31;;:::i;:::-;:39;:::i;:::-;8173:7;8182:12;;:::i;:::-;8155:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;8216:4;8209:11;:::o;8055:219::-;8258:5;;;;8251:12;:::o;1033:3847:181:-;;;;:::i;:::-;;:::o;4603:312:59:-;4675:13;4683:4;4675:13;:::i;:::-;:23;;4692:6;4675:23;:::i;:::-;;;:::i;:::-;;:120;;;;4603:312;4658:251;;4603:312::o;4658:251::-;4869:29;;;;;;;;;;;;:::i;:::-;;;;4675:120;4753:32;;;:::i;:::-;:42;;4789:6;4753:42;:::i;:::-;;;:::i;:::-;;;4675:120;;3149:76:48;;3202:4;4368:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3149:76::o;4305:78:181:-;;;;:::i;:::-;:::o;1033:3847::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6057:538:59:-;;;6156:52;;:50;:36;6174:17;6156:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6057:538;6152:437;;;;;;;;;;;;;;6057:538::o;6152:437::-;6518:60;6560:17;6518:60;;;;;;;;;;;;;:::i;:::-;;;;6152:437;6250:4;;:40;;6258:32;;:::i;:::-;6250:40;:::i;:::-;;;:::i;:::-;;6246:120;;6428:4;6409:17;;;6428:4;:::i;:::-;6152:437;;6246:120;6317:34;6346:4;6317:34;;;;;;;;;;;;;:::i;:::-;;;;6156:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5032:213;5098:13;5106:4;5098:13;:::i;:::-;:23;;5115:6;5098:23;:::i;:::-;;;:::i;:::-;;5094:145;;5032:213::o;5094:145::-;5199:29;4869;;;5199;;;;;;;;:::i;:::-;;;;1147:162:68;1237:66;1147:162;:::o;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;3201:139::-;3306:27;;3201:139;3280:7;;:::i;:::-;3306:17;;:27;:::i;:::-;;:::i;:::-;3299:34;:::o;1033:3847::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29905:667:185:-;;;;30118:71;30166:23;30083:19;;:::i;:::-;30166:12;;:23;:::i;:::-;30118:71;:::i;:::-;30227:11;:18;:11;:18;:::i;:::-;30272:1;30260:13;30272:1;30260:13;:::i;:::-;;30275:1;:21;;30279:17;30275:21;:::i;:::-;;;:::i;:::-;;;;;30313:50;30349:14;:11;30361:1;30349:14;;:::i;:::-;;30313:50;:::i;:::-;30381:10;;:1;:10;;:::i;:::-;:22;;30395:8;30381:22;:::i;:::-;;;:::i;:::-;;:58;;;30260:13;30377:120;;30260:13;30538:3;;;;:::i;:::-;30260:13;;30377:120;30538:3;30474:1;;:8;;30459:23;30474:1;:8;;:::i;:::-;30459:23;;:::i;:::-;30377:120;;;;30381:58;30418:1;30407:19;;30418:7;:1;:7;30407:19;:::i;:::-;;:::i;:::-;:32;;30430:9;30407:32;:::i;:::-;;;:::i;:::-;;30381:58;;30275:21;;;;;;;;29905:667::o;8737:170:58:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2970:67:59:-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;:::o;3231:65:48:-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:68:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2684:111:69:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;16492:204:177:-;16561:7;;:::i;:::-;16664:5;16653:35;16676:11;;16664:10;;:5;:10;;:::i;:::-;16676:5;:11;;:::i;:::-;16653:35;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16643:46;;;;:::i;:::-;;;:::i;:::-;;16636:53;:::o;1033:3847:181:-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;3484:118::-;3561:34;3568:27;3561:34;3484:118;3568:17;:27;:::i;:::-;3561:34;:::i;:::-;3484:118::o;1695:193:111:-;1758:29;1033:3847:181;;;1779:7:111;;;1758:29;:::i;:::-;1801:5;:19;;1810:10;1818:1;1810:10;:::i;:::-;1801:19;:::i;:::-;;;:::i;:::-;;1875:5;1797:56;1033:3847:181;;;1845:7:111;;;;:::i;3608:107:181:-;3678:30;;;;;;;;;;;;:::i;:::-;;;;3721:127;3805:36;3721:127;3805:36;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3854:196::-;3976:67;;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3346:132::-;3436:27;:35;3346:132;3436:17;;:27;:::i;:::-;:35;:::i;:::-;3346:132::o;1033:3847::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4381:197:48:-;;4468:23;4469:22;4477:4;4483:7;4469:22;;:::i;:::-;4468:23;;:::i;:::-;4464:108;;4381:197;;:::o;4464:108::-;4514:47;;;;;;;;;;;;;;:::i;:::-;;;;1441:138:19;1493:7;;:::i;:::-;1546:19;1519:53;;:47;1546:19;;:::i;:::-;1519:47;:::i;:::-;:53;;:::i;:::-;1512:60;:::o;2264:344::-;;2374:17;;;:::i;:::-;2425;2407:36;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2458:11;:4;:11;:::i;:::-;:15;;2472:1;2458:15;:::i;:::-;;;:::i;:::-;;2454:148;;;;2489:53;2518:17;2489:53;:::i;:::-;;2454:148;2264:344::o;2454:148::-;;;;;:::i;:::-;;;7084:141:58;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;;;;;;;;;;;:::i;:::-;;;;6893:76;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:68:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1910:40:69:-;1949:1;;;:::i;:::-;1910:40;:::o;2801:183::-;2954:23;2916:28;;:::i;:::-;2954:9;2966:11;;:::i;:::-;2954:1;:9;:23;:::i;:::-;2801:183::o;:::-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;;;;;;;;:::i;:::-;:::o;4161:138::-;4250:42;4161:138;4250:42;;;;;;;;;;;;;:::i;:::-;;;;2694:388:111;2750:326;2694:388;;2750:326;;;;;;;;;;;;;;;;;;;;;;;;1899:163:34;;:::o;1671:281:19:-;1748:17;:29;:34;;1781:1;1748:34;:::i;:::-;;;:::i;:::-;;1744:119;;1872:73;1928:17;1872:53;:47;1899:19;;:::i;:::-;1872:47;:::i;:::-;:53;:73;:::i;:::-;1671:281::o;1744:119::-;1805:47;1834:17;1805:47;6518:60:59;;;;;;1805:47:19;;;;;;:::i;:::-;;;;6113:122;6163:9;:13;;6175:1;6163:13;:::i;:::-;;;:::i;:::-;;6159:70;;6113:122::o;6159:70::-;6199:19;;;;;;;;;;;;:::i;:::-;;;;1033:3847:181;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;3900:253:29;4049:25;3900:253;4091:55;3900:253;3983:12;;:::i;:::-;4049:6;;4069:4;4049:25;;;;;;;;;;;:::i;:::-;4118:6;4126:7;4135:10;4091:55;;:::i;:::-;4084:62;:::o;8487:120:58:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;2395:183:69:-;2499:73;2395:183;:::o;4421:582:29:-;;4593:8;4421:582;4565:12;;:::i;:::-;4594:7;4593:8;;:::i;:::-;4589:408;;;;4625:10;;:::i;4589:408::-;4841:17;:10;:17;:::i;:::-;:22;;4862:1;4841:22;:::i;:::-;;;:::i;:::-;;:49;;;4589:408;4837:119;;4976:10;4969:17;:::o;4837:119::-;4917:24;4934:6;4917:24;;;;;;;;;;;;;:::i;:::-;;;;4841:49;4867:6;;:18;:23;;4889:1;4867:23;:::i;:::-;;;:::i;:::-;;4841:49;;5543:487;5674:17;:10;:17;:::i;:::-;:21;;5694:1;5674:21;:::i;:::-;;;:::i;:::-;;5670:354;;;;5799:158;;;;;;5670:354;5994:19;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{},"immutableReferences":{"17075":[{"start":14503,"length":32},{"start":14604,"length":32},{"start":15035,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","ASSET_MANAGER_ROLE()":"a4b32de8","BPS_DENOMINATOR()":"e1a45218","COMMISSION_CHANGE_DELAY()":"d45ff582","DEFAULT_ADMIN_ROLE()":"a217fddf","LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MIN_LOCK_AMOUNT()":"dd764abf","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","PRECISION()":"aaf5eb68","SLASHER_ROLE()":"5095af64","TANGLE_ROLE()":"602356e3","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","VIRTUAL_ASSETS()":"b6608409","VIRTUAL_SHARES()":"88c47f68","blueprintSlashCount(uint64,address)":"4e9c929a","clearFacetSelectors(bytes4[])":"e07dec29","currentRound()":"8a19c8bc","delegationBondLessDelay()":"ba05bbf5","facetForSelector(bytes4)":"90837ff4","getAccumulatedDust(address)":"49147411","getAssetAdapter(address)":"8a7fe60f","getOperatorSlashFactor(address,bytes32)":"12d91c88","getPendingSlashCount(address)":"9480e4dd","getRoleAdmin(bytes32)":"248a9ca3","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getSnapshot(uint64,address)":"c07449e2","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,uint256,uint256,uint16)":"cbb6d6bd","lastRoundAdvance()":"05d64e38","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","nativeEnabled()":"77ab2cf3","nextSlashId(address)":"96085673","operatorCommissionBps()":"32273f61","paused()":"5c975abb","proxiableUUID()":"52d1902d","registerFacet(address)":"46d163aa","registerFacetSelectors(address,bytes4[])":"19e82e61","renounceRole(bytes32,address)":"36568abe","requireAdapters()":"b54b2b9e","resetPendingSlashCount(address,uint64)":"e27e05c1","revokeRole(bytes32,address)":"d547741f","roundDuration()":"f7cb789a","serviceSlashCount(uint64,address)":"9722f4b9","slashHistory(address,uint64)":"0aa8b110","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"existingFacet\",\"type\":\"address\"}],\"name\":\"SelectorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"UnknownSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDust\",\"type\":\"uint256\"}],\"name\":\"DustAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FacetSelectorCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"OperatorDelegationModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashCountReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashDecremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMISSION_CHANGE_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TANGLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_ASSETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_SHARES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blueprintSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"clearFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"facetForSelector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAccumulatedDust\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"}],\"name\":\"getOperatorSlashFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getPendingSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lostAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSnapshot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDelegated\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorSnapshot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_operatorCommissionBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundAdvance\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nextSlashId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"registerFacet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"registerFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requireAdapters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"resetPendingSlashCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"slashHistory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"L-18 FIX: Zero address provided - kept parameterless for backward compatibility Context is typically clear from the function that reverts\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"details\":\"Individual delegator amounts can be computed: shares * (oldRate - newRate) / PRECISION\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"params\":{\"assetHash\":\"Asset hash for the pool\",\"blueprintId\":\"The blueprint where violation occurred (0 for consensus/native slash)\",\"delegatorsSlashed\":\"Amount slashed from delegator pools (reduces totalAssets)\",\"exchangeRateAfter\":\"Exchange rate after slash (scaled by PRECISION)\",\"operator\":\"The slashed operator\",\"operatorSlashed\":\"Amount slashed from operator's self-stake\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"}},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"commitmentCount\":\"Number of asset commitments that were slashed\",\"operator\":\"The slashed operator\",\"serviceId\":\"The service where violation occurred\",\"totalSlashed\":\"Total amount slashed across all committed assets\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getAccumulatedDust(address)\":{\"params\":{\"token\":\"The token address (address(0) for native)\"},\"returns\":{\"_0\":\"The accumulated dust amount\"}},\"getAssetAdapter(address)\":{\"params\":{\"token\":\"Token address\"},\"returns\":{\"_0\":\"adapter Adapter address (or zero if none)\"}},\"getOperatorSlashFactor(address,bytes32)\":{\"details\":\"Returns PRECISION (1e18) if unset\"},\"getPendingSlashCount(address)\":{\"params\":{\"operator\":\"The operator to query\"},\"returns\":{\"_0\":\"count Number of pending slashes\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getSlashCountForBlueprint(uint64,address)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"operator\":\"The operator address\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in services of this blueprint\"}},\"getSlashCountForService(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in this service\"}},\"getSlashImpact(address,uint64,address)\":{\"params\":{\"delegator\":\"The delegator to check\",\"operator\":\"The operator that was slashed\",\"slashId\":\"The slash event ID\"},\"returns\":{\"lostAmount\":\"Approximate amount lost due to this slash\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,uint256,uint256,uint16)\":{\"params\":{\"_operatorCommissionBps\":\"Operator commission in basis points\",\"admin\":\"Admin address\",\"nativeMinDelegation\":\"Minimum delegation amount\",\"nativeMinOperatorStake\":\"Minimum stake for operators\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"resetPendingSlashCount(address,uint64)\":{\"details\":\"Admin-only recovery function for when count becomes inconsistent\",\"params\":{\"count\":\"The correct pending slash count\",\"operator\":\"The operator to reset\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"MultiAssetDelegation\",\"version\":1},\"userdoc\":{\"events\":{\"DustAccumulated(address,uint256,uint256)\":{\"notice\":\"Emitted when dust is accumulated from rounding\"},\"DustSwept(address,address,uint256)\":{\"notice\":\"Emitted when accumulated dust is swept to treasury\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when slash is recorded (for off-chain indexing of per-delegator impact)\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an operator and their delegators are slashed for an asset\"},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"notice\":\"Emitted when an operator is slashed for a specific service with per-asset commitments\"}},\"kind\":\"user\",\"methods\":{\"COMMISSION_CHANGE_DELAY()\":{\"notice\":\"Timelock delay for commission changes (7 days)\"},\"blueprintSlashCount(uint64,address)\":{\"notice\":\"Slash count per blueprint: blueprintId => operator => count\"},\"clearFacetSelectors(bytes4[])\":{\"notice\":\"Remove selectors from the router\"},\"currentRound()\":{\"notice\":\"Current round number\"},\"delegationBondLessDelay()\":{\"notice\":\"Delay for unstaking delegations (in rounds)\"},\"facetForSelector(bytes4)\":{\"notice\":\"Resolve the facet for a selector\"},\"getAccumulatedDust(address)\":{\"notice\":\"Get accumulated dust for a token\"},\"getAssetAdapter(address)\":{\"notice\":\"Get adapter for a token\"},\"getOperatorSlashFactor(address,bytes32)\":{\"notice\":\"Reserved getter for the historical slash factor (unused with share-based pools)\"},\"getPendingSlashCount(address)\":{\"notice\":\"Get pending slash count for an operator\"},\"getSlashCount(address)\":{\"notice\":\"Get total slashes for an operator\"},\"getSlashCountForBlueprint(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific blueprint\"},\"getSlashCountForService(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific service\"},\"getSlashImpact(address,uint64,address)\":{\"notice\":\"Calculate how much a delegator lost from a specific slash\"},\"getSlashRecord(address,uint64)\":{\"notice\":\"Get slash record details\"},\"getSnapshot(uint64,address)\":{\"notice\":\"Get snapshot for an operator at a specific round\"},\"initialize(address,uint256,uint256,uint16)\":{\"notice\":\"Initialize the contract\"},\"lastRoundAdvance()\":{\"notice\":\"Timestamp when the last round was advanced\"},\"leaveDelegatorsDelay()\":{\"notice\":\"Delay for delegator withdrawals (in rounds)\"},\"leaveOperatorsDelay()\":{\"notice\":\"Delay for operator exit (in rounds)\"},\"nativeEnabled()\":{\"notice\":\"Whether native asset is enabled\"},\"nextSlashId(address)\":{\"notice\":\"Next slash ID per operator\"},\"operatorCommissionBps()\":{\"notice\":\"Operator commission rate in basis points\"},\"registerFacet(address)\":{\"notice\":\"Register selectors exposed by a facet\"},\"registerFacetSelectors(address,bytes4[])\":{\"notice\":\"Register specific selectors for a facet\"},\"requireAdapters()\":{\"notice\":\"Whether to require adapters for all ERC20 deposits\"},\"resetPendingSlashCount(address,uint64)\":{\"notice\":\"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes\"},\"roundDuration()\":{\"notice\":\"Seconds per round (used for time-based rate limiting)\"},\"serviceSlashCount(uint64,address)\":{\"notice\":\"Slash count per service: serviceId => operator => count\"},\"slashHistory(address,uint64)\":{\"notice\":\"Slash history per operator: operator => slashId => record\"}},\"notice\":\"Router contract for multi-asset staking\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MultiAssetDelegation.sol\":\"MultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"src/config/ProtocolConfig.sol\":{\"keccak256\":\"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72\",\"dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C\"]},\"src/facets/FacetRouterBase.sol\":{\"keccak256\":\"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa\",\"dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD\"]},\"src/interfaces/IFacetSelectors.sol\":{\"keccak256\":\"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3\",\"dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7\",\"dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c\",\"dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV\"]},\"src/staking/DepositManager.sol\":{\"keccak256\":\"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8\",\"dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3\"]},\"src/staking/MultiAssetDelegation.sol\":{\"keccak256\":\"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2\",\"dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67\",\"dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0\",\"dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d\",\"dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os\"]},\"src/staking/adapters/IAssetAdapter.sol\":{\"keccak256\":\"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44\",\"dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"NotAContract"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"existingFacet","type":"address"}],"type":"error","name":"SelectorAlreadyRegistered"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"UnknownSelector"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalDust","type":"uint256","indexed":false}],"type":"event","name":"DustAccumulated","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DustSwept","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetRegistered","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"FacetSelectorCleared","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetSelectorSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8","indexed":false}],"type":"event","name":"OperatorDelegationModeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorWhitelistUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashCountReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashDecremented","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashIncremented","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMISSION_CHANGE_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TANGLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_ASSETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"blueprintSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"clearFacetSelectors"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetForSelector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAccumulatedDust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetAdapter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorSlashFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"lostAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSnapshot","outputs":[{"internalType":"struct Types.OperatorSnapshot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"totalDelegated","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"nativeMinOperatorStake","type":"uint256"},{"internalType":"uint256","name":"nativeMinDelegation","type":"uint256"},{"internalType":"uint16","name":"_operatorCommissionBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastRoundAdvance","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nextSlashId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerFacet"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"registerFacetSelectors"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"requireAdapters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"resetPendingSlashCount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"serviceSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"slashHistory","outputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getAccumulatedDust(address)":{"params":{"token":"The token address (address(0) for native)"},"returns":{"_0":"The accumulated dust amount"}},"getAssetAdapter(address)":{"params":{"token":"Token address"},"returns":{"_0":"adapter Adapter address (or zero if none)"}},"getOperatorSlashFactor(address,bytes32)":{"details":"Returns PRECISION (1e18) if unset"},"getPendingSlashCount(address)":{"params":{"operator":"The operator to query"},"returns":{"_0":"count Number of pending slashes"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getSlashCountForBlueprint(uint64,address)":{"params":{"blueprintId":"The blueprint ID","operator":"The operator address"},"returns":{"_0":"count Number of times operator was slashed in services of this blueprint"}},"getSlashCountForService(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"count Number of times operator was slashed in this service"}},"getSlashImpact(address,uint64,address)":{"params":{"delegator":"The delegator to check","operator":"The operator that was slashed","slashId":"The slash event ID"},"returns":{"lostAmount":"Approximate amount lost due to this slash"}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,uint256,uint256,uint16)":{"params":{"_operatorCommissionBps":"Operator commission in basis points","admin":"Admin address","nativeMinDelegation":"Minimum delegation amount","nativeMinOperatorStake":"Minimum stake for operators"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"resetPendingSlashCount(address,uint64)":{"details":"Admin-only recovery function for when count becomes inconsistent","params":{"count":"The correct pending slash count","operator":"The operator to reset"}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMISSION_CHANGE_DELAY()":{"notice":"Timelock delay for commission changes (7 days)"},"blueprintSlashCount(uint64,address)":{"notice":"Slash count per blueprint: blueprintId => operator => count"},"clearFacetSelectors(bytes4[])":{"notice":"Remove selectors from the router"},"currentRound()":{"notice":"Current round number"},"delegationBondLessDelay()":{"notice":"Delay for unstaking delegations (in rounds)"},"facetForSelector(bytes4)":{"notice":"Resolve the facet for a selector"},"getAccumulatedDust(address)":{"notice":"Get accumulated dust for a token"},"getAssetAdapter(address)":{"notice":"Get adapter for a token"},"getOperatorSlashFactor(address,bytes32)":{"notice":"Reserved getter for the historical slash factor (unused with share-based pools)"},"getPendingSlashCount(address)":{"notice":"Get pending slash count for an operator"},"getSlashCount(address)":{"notice":"Get total slashes for an operator"},"getSlashCountForBlueprint(uint64,address)":{"notice":"Get slash count for an operator in a specific blueprint"},"getSlashCountForService(uint64,address)":{"notice":"Get slash count for an operator in a specific service"},"getSlashImpact(address,uint64,address)":{"notice":"Calculate how much a delegator lost from a specific slash"},"getSlashRecord(address,uint64)":{"notice":"Get slash record details"},"getSnapshot(uint64,address)":{"notice":"Get snapshot for an operator at a specific round"},"initialize(address,uint256,uint256,uint16)":{"notice":"Initialize the contract"},"lastRoundAdvance()":{"notice":"Timestamp when the last round was advanced"},"leaveDelegatorsDelay()":{"notice":"Delay for delegator withdrawals (in rounds)"},"leaveOperatorsDelay()":{"notice":"Delay for operator exit (in rounds)"},"nativeEnabled()":{"notice":"Whether native asset is enabled"},"nextSlashId(address)":{"notice":"Next slash ID per operator"},"operatorCommissionBps()":{"notice":"Operator commission rate in basis points"},"registerFacet(address)":{"notice":"Register selectors exposed by a facet"},"registerFacetSelectors(address,bytes4[])":{"notice":"Register specific selectors for a facet"},"requireAdapters()":{"notice":"Whether to require adapters for all ERC20 deposits"},"resetPendingSlashCount(address,uint64)":{"notice":"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes"},"roundDuration()":{"notice":"Seconds per round (used for time-based rate limiting)"},"serviceSlashCount(uint64,address)":{"notice":"Slash count per service: serviceId => operator => count"},"slashHistory(address,uint64)":{"notice":"Slash history per operator: operator => slashId => record"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/MultiAssetDelegation.sol":"MultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"src/config/ProtocolConfig.sol":{"keccak256":"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c","urls":["bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72","dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C"],"license":"MIT"},"src/facets/FacetRouterBase.sol":{"keccak256":"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e","urls":["bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa","dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD"],"license":"MIT"},"src/interfaces/IFacetSelectors.sol":{"keccak256":"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4","urls":["bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3","dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d","urls":["bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7","dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267","urls":["bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c","dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV"],"license":"MIT"},"src/staking/DepositManager.sol":{"keccak256":"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248","urls":["bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8","dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3"],"license":"MIT"},"src/staking/MultiAssetDelegation.sol":{"keccak256":"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99","urls":["bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2","dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5","urls":["bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67","dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8","urls":["bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0","dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae","urls":["bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d","dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os"],"license":"MIT"},"src/staking/adapters/IAssetAdapter.sol":{"keccak256":"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061","urls":["bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44","dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW"],"license":"MIT"}},"version":1},"id":181} \ No newline at end of file diff --git a/bindings/abi/OperatorStatusRegistry.json b/bindings/abi/OperatorStatusRegistry.json index a51e181f..7de4cb63 100644 --- a/bindings/abi/OperatorStatusRegistry.json +++ b/bindings/abi/OperatorStatusRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617b106104d38239608051818181610edf0152613936015260a051818181611460015281816126cd015281816134370152818161574e015261630b0152617b1090f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617fe38038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:182:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;13060:465::-;;;;;:::i;:::-;13147:24;;13252:95;13224:284;13365:35;13418:14;13224:284;13418:14;13450:13;13481;13489:4;13481:13;:::i;:::-;13224:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13201:317;;;;:::i;:::-;;;:::i;:::-;;13182:336;;13060:465::o;984:1491:3:-;;;;:::i;:::-;:::o;6415:38701:182:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:2:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:182;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:38701:182:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:182:-:0;;;;;;;;;-1:-1:-1;6415:38701:182;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;11660:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:38701;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7851:61::-;7903:9;;;:::i;:::-;7851:61;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;12224:30::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14180:52::-;14223:9;;;:::i;:::-;14180:52;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8133:41::-;;;:::o;6415:38701::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;12352:53::-;12398:7;;;:::i;:::-;12352:53;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10898:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:182;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;39843:43::-;39883:3;;;:::i;:::-;39843:43;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;11530:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;12045:35::-;;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32979:51::-;33028:2;;;:::i;:::-;32979:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7980:55::-;8034:1;;;:::i;:::-;7980:55;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;33154:51::-;33203:2;;;:::i;:::-;33154:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;11816:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;12131:29::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10758:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8447:189::-;8492:144;8447:189;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30254:263::-;30478:24;:32;30254:263;30336:53;30344:10;:24;;30358:10;30344:24;:::i;:::-;;;:::i;:::-;;30336:53;:::i;:::-;30399:69;30407:24;;:13;30421:9;30407:24;;:::i;:::-;;:::i;:::-;:38;;30435:10;30443:1;30435:10;:::i;:::-;30407:38;:::i;:::-;;;:::i;:::-;;30399:69;:::i;:::-;30478:13;;:24;:::i;:::-;:32;:::i;:::-;30254:263::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;37647:147::-;37766:21;37647:147;37725:22;;:::i;:::-;37777:9;37766:21;:::i;:::-;37759:28;:::o;6415:38701::-;;;:::o;36547:176::-;36667:35;:49;36547:176;36667:25;:49;36547:176;36641:7;;:::i;:::-;36667:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;36660:56;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:182;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33980:640::-;;;;;34097:68;34105:10;:38;;34119:24;;:13;34133:9;34119:24;;:::i;:::-;;:::i;:::-;34105:38;:::i;:::-;;;:::i;:::-;;34097:68;:::i;:::-;34175:77;34183:18;:11;;:18;;:::i;:::-;:44;;34205:22;;:::i;:::-;34183:44;:::i;:::-;;;:::i;:::-;;;34175:77;:::i;:::-;34262:32;;34269:25;:14;34284:9;34269:25;;:::i;:::-;34262:32;:::i;:::-;34309:13;34321:1;34309:13;:::i;:::-;34348:3;34324:1;:22;;34328:18;:11;;:18;;:::i;:::-;34324:22;:::i;:::-;;;:::i;:::-;;;;;34348:3;34381:11;34367:85;34375:33;:26;34381:19;:14;:11;;34393:1;34381:14;;:::i;:::-;:19;;;;;:::i;:::-;34375:26;;:::i;:::-;:33;;:::i;:::-;:59;;34412:22;;:::i;:::-;34375:59;:::i;:::-;;;:::i;:::-;;;34367:85;:::i;:::-;34466:77;34474:23;;:14;:11;;34486:1;34474:14;;:::i;:::-;:23;;:::i;:::-;:50;;34501:23;;:14;:11;;34513:1;34501:14;;:::i;:::-;:23;;:::i;:::-;34474:50;:::i;:::-;;;:::i;:::-;;;34466:77;:::i;:::-;34557:46;:30;:25;:14;34572:9;34557:25;;:::i;:::-;:30;:::i;:::-;34588:14;:11;;34600:1;34588:14;;:::i;:::-;34557:46;;:::i;:::-;34348:3;:::i;:::-;34309:13;;34324:22;;;;;;33980:640::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30760:1036::-;30850:53;30858:10;:24;;30872:10;30858:24;:::i;:::-;;;:::i;:::-;;30850:53;:::i;:::-;30913:47;30921:8;:22;;30933:10;30941:1;30933:10;:::i;:::-;30921:22;:::i;:::-;;;:::i;:::-;;;30913:47;:::i;:::-;30970:76;30978:45;:35;:31;:20;30999:9;30978:31;;:::i;:::-;:35;:::i;:::-;31014:8;30978:45;;:::i;:::-;30970:76;:::i;:::-;31439:42;;31446:35;:25;:14;31461:9;31446:25;;:::i;:::-;31472:8;31446:35;;:::i;:::-;31439:42;:::i;:::-;31672:63;31717:18;31672:42;:35;:25;:14;31687:9;31672:25;;:::i;:::-;31698:8;31672:35;;:::i;:::-;:42;:63;:::i;:::-;31780:8;31750:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30760:1036::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34923:188:182:-;35078:26;34923:188;35078:26;;:::i;:::-;34923:188::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;7140:166;;7298:1;7140:166;;;;;;;7200:88;7208:52;:40;:31;15071:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;15100:9;:27;;15112:15;15100:27;:::i;:::-;;;:::i;:::-;;15096:95;;15205:27;:15;:27;15223:9;15205:27;:::i;:::-;;;:::i;:::-;:47;;15235:17;;:::i;:::-;15205:47;:::i;:::-;;;:::i;:::-;;15201:135;;15921:7;15418:18;;15759:25;15794:50;15418:18;;15390:235;15418:18;15390:235;15418:18;15759:25;15418:18;;;15566;15418;;:::i;:::-;15454:10;;15482:9;15509:11;15538:10;15576:7;15566:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;15602:9;15390:235;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15367:268;;;;:::i;:::-;;;:::i;:::-;;15672:58;15701:16;15672:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15662:69;;;;:::i;:::-;;;:::i;:::-;;15774:9;15759:25;:::i;:::-;;;:::i;:::-;15802:20;;15812:10;15802:20;:::i;:::-;;;:::i;:::-;;15794:50;:::i;:::-;15884:11;15897:10;15909;15921:7;;;;:::i;:::-;14803:1133::o;15201:135::-;15301:23;15308:15;15301:23;:::i;:::-;15275:50;;;;;;;;;;;;;;;:::i;:::-;;;;15096:95;15167:23;15174:15;15167:23;:::i;:::-;15136:55;;;;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;35274:160::-;;35392:35;35274:160;35348:25;;:::i;:::-;35403:7;;35392:35;;;;:::i;:::-;35385:42;:::o;43895:136::-;43991:31;:24;:33;43895:136;43965:7;;:::i;:::-;43991:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;43984:40;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;37041:359::-;;37119:16;;:::i;:::-;37163;:36;:34;:27;:16;37180:9;37163:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37249:5;37235:20;37249:5;37235:20;:::i;:::-;37282:1;37270:13;37282:1;37270:13;:::i;:::-;37296:3;37285:1;:9;;37289:5;37285:9;:::i;:::-;;;:::i;:::-;;;;;37296:3;37327:16;37315:45;37327:33;:30;:27;:16;37344:9;37327:27;;:::i;:::-;:30;:::i;:::-;37358:1;37327:33;;:::i;:::-;37315:45;:6;37322:1;;37315:45;;;:::i;:::-;;:::i;:::-;37296:3;:::i;:::-;37270:13;;37285:9;;;;;37380:13;:::o;6415:38701::-;;;:::o;35990:261::-;;36076:4;;:::i;:::-;36099:14;:42;;:35;:25;:14;36114:9;36099:25;;:::i;:::-;36125:8;36099:35;;:::i;:::-;:42;;:::i;:::-;:64;;36145:18;36099:64;:::i;:::-;;;:::i;:::-;;:145;;;;;35990:261;36092:152;;;:::o;36099:145::-;36179:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;36225:19;36179:65;:::i;:::-;;;:::i;:::-;;36099:145;;;;40097:200;40231:59;40097:200;40178:26;;:::i;:::-;40262:9;40273:1;40276:13;40231:59;40276:13;;:::i;:::-;40231:59;;:::i;:::-;;;:::i;:::-;40216:74;40097:200;:::o;7140:166::-;;7298:1;7140:166;;;;7200:88;7208:52;:40;:31;16286:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;16072:320::-;;16377:7;16072:320;;;;16353:10;16365;16377:7;;;;:::i;:::-;16072:320::o;:::-;;;;;;;;:::i;:::-;:::o;32433:178::-;;32554:40;:31;:50;32433:178;32531:4;;:::i;:::-;32554:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;32547:57;:::o;6415:38701::-;;;:::o;36307:173::-;36431:35;:42;36307:173;36431:25;:42;36307:173;36402:10;;:::i;:::-;36431:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;36424:49;:::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;20231:2843::-;;;;;20414:53;20422:10;:27;;20436:13;20444:4;20436:13;:::i;:::-;20422:27;:::i;:::-;;;:::i;:::-;;20414:53;:::i;:::-;20478:66;20519:25;:14;20534:9;20519:25;;:::i;:::-;20478:66;:::i;:::-;20651:8;20637:23;20651:8;20637:23;:::i;:::-;20687:1;20675:13;20687:1;20675:13;:::i;:::-;20704:3;20690:1;:12;;20694:8;20690:12;:::i;:::-;;;:::i;:::-;;;;;20704:3;20755:5;20723:47;20749:20;20755:13;:8;:5;20761:1;20755:8;;:::i;:::-;;:13;;20749:20;:::i;:::-;20739:31;;;;:::i;:::-;;;:::i;:::-;;20723:47;:10;20734:1;;20723:47;;;:::i;:::-;;:::i;:::-;20704:3;:::i;:::-;20675:13;;20690:12;;;;;;;20813:18;:11;:18;:::i;:::-;:22;;20834:1;20813:22;:::i;:::-;;;:::i;:::-;;20914:26;;;:::i;:::-;20954:14;;20950:237;;20670:111;21267:13;21279:1;21267:13;:::i;:::-;21296:3;21282:1;:12;;21286:8;21282:12;:::i;:::-;;;:::i;:::-;;;;;21328:4;21371:5;21449:14;21445:737;;21296:3;22244:5;;;;;21296:3;22244:5;22240:198;;21296:3;;;;;:::i;:::-;21267:13;;22240:198;22320:5;22303:13;:8;22269:33;:48;22320:5;22269:23;22320:14;;:8;22269:65;22320:5;22326:1;22320:8;;:::i;:::-;;:14;;:::i;:::-;22269:12;;:23;:::i;:::-;:33;:::i;:::-;22303:5;22309:1;22303:8;;:::i;:::-;;:13;;22269:48;;:::i;:::-;:65;:::i;:::-;22372:9;;22383:8;22393:5;22408:14;;:8;22393:13;:8;:5;22399:1;22393:8;;:::i;:::-;;:13;;22408:5;22414:1;22408:8;;:::i;:::-;;:14;;:::i;:::-;22357:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;22240:198;;;;;21445:737;21500:1;;;;;;21488:13;21500:1;21488:13;:::i;:::-;21527:3;21503:1;:22;;21507:18;:11;:18;:::i;:::-;21503:22;:::i;:::-;;;:::i;:::-;;;;;21558:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;21575:12;;:9;21585:1;21575:12;;:::i;:::-;;:::i;:::-;21558:29;:::i;:::-;;;:::i;:::-;;21554:433;;21527:3;;;:::i;:::-;21488:13;;21554:433;21635:4;;;;;;;21296:3;21635:4;;;;;;21669:5;;:14;;:8;:5;21675:1;21669:8;;:::i;:::-;;:14;;:::i;:::-;:40;;21686:23;;:14;:11;21698:1;21686:14;;:::i;:::-;;:23;;:::i;:::-;21669:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;21554:433;21665:269;;;;;;21554:433;22094:18;21959:5;21483:522;22094:18;;:::i;:::-;22090:78;;21483:522;21445:737;;;;;;;22090:78;22144:5;;22090:78;;21665:269;21806:9;;;21817:8;21827:13;:8;:5;21833:1;21827:8;;:::i;:::-;;:13;;21790:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22094:18;21902:5;21665:269;;;;;21669:84;21713:40;:5;;;21730:14;21713:40;:5;:14;;:8;21730:23;21713:5;21730:23;21713:5;:8;:::i;:::-;;:14;;:::i;:::-;21730:11;:14;:::i;:::-;;:23;;:::i;:::-;21713:40;:::i;:::-;;;:::i;:::-;;21669:84;;;;;;21503:22;;;;;;;21296:3;21503:22;;;22094:18;21503:22;;;;21282:12;;;;;;;;;;22509:13;22521:1;22509:13;:::i;:::-;22504:564;22548:3;22524:1;:22;;22528:18;:11;:18;:::i;:::-;22524:22;:::i;:::-;;;:::i;:::-;;;;;22571:24;22572:23;;:14;:11;22584:1;22572:14;;:::i;:::-;;:23;;:::i;:::-;22571:24;;:::i;:::-;22567:38;;22638:37;22648:26;22654:19;:14;:11;22666:1;22654:14;;:::i;:::-;;:19;22648:26;:::i;:::-;22638:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;22702:5;;22738:1;22726:13;22738:1;22726:13;:::i;:::-;22764:3;22741:1;:21;;22745:17;:10;:17;:::i;:::-;22741:21;:::i;:::-;;;:::i;:::-;;;;;22791:13;;:10;22802:1;22791:13;;:::i;:::-;;:::i;:::-;:24;;22808:7;22791:24;:::i;:::-;;;:::i;:::-;;22787:110;;22764:3;;;:::i;:::-;22726:13;;22787:110;22847:4;;;;;22548:3;22847:4;;22928:6;22847:4;22721:190;22928:6;;:::i;:::-;22924:134;;22721:190;22509:13;22548:3;:::i;:::-;22509:13;;;;22924:134;22975:9;22986:8;22996:19;:14;:11;23008:1;22996:14;;:::i;:::-;;:19;22959:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22924:134;;22741:21;;;;;22548:3;22741:21;;22928:6;22741:21;;;22567:38;22597:8;;22548:3;22597:8;;;22524:22;;;;;;20231:2843::o;20950:237::-;21010:11;;;;20996:33;21010:18;:11;;;;;;:18;:::i;:::-;20996:33;:::i;:::-;21060:1;21048:13;21060:1;21048:13;:::i;:::-;21087:3;21063:1;:22;;21067:18;:11;:18;:::i;:::-;21063:22;:::i;:::-;;;:::i;:::-;;;;;21087:3;21141:11;21110:52;21125:37;21135:26;21141:19;:14;:11;21153:1;21141:14;;:::i;:::-;;:19;21135:26;:::i;:::-;21125:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;21110:52;:9;21120:1;;21110:52;;;:::i;:::-;;:::i;:::-;21087:3;:::i;:::-;21048:13;;21063:22;;;;;;;;;;20950:237;;1500:62:2;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:38701:182:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;36769:211::-;36931:42;36769:211;36938:25;:35;36769:211;36895:20;;:::i;:::-;36938:14;;:25;:::i;:::-;:35;:::i;:::-;36931:42;:::i;:::-;;:::o;6415:38701::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;44950:164::-;45068:39;44950:164;45068:29;:39;44950:164;45043:6;;:::i;:::-;45068:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;45061:46;:::o;2244:229:3:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;37448:142:182;37547:34;:27;:36;37448:142;37521:7;;:::i;:::-;37547:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37540:43;:::o;6415:38701::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;40660:780::-;;;;;40824:26;;:::i;:::-;40852:13;;;:::i;:::-;40924:9;40913:21;40924:9;40913:21;:::i;:::-;40952:13;:33;:31;:24;:13;40966:9;40952:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;41000:6;:16;;:6;:16;;:::i;:::-;:21;;41020:1;41000:21;:::i;:::-;;;:::i;:::-;;:35;;;;40660:780;41000:54;;;;40660:780;40996:117;;41143:52;41151:6;41170:25;41178:16;;41143:24;41151:15;;41372:61;41151:6;;;:15;;:::i;:::-;41143:24;:::i;:::-;41178:6;:16;;:::i;:::-;41170:25;:::i;:::-;41143:52;;:::i;:::-;41225:5;;:21;;41233:13;;:::i;:::-;41225:21;:::i;:::-;;;:::i;:::-;;:45;;;;41249:13;;;:::i;:::-;41225:45;41294:18;:6;41303:9;41294:18;;:::i;:::-;:26;;41315:5;41294:26;:::i;:::-;;;:::i;:::-;;:55;;;;41323:5;;41294:55;41399:9;41410:6;41418:3;41423:9;41372:61;;:::i;:::-;40660:780;:::o;41294:55::-;41331:18;:6;;:18;:::i;:::-;41294:55;;41225:45;;;40996:117;41092:1;;;;;41078:16;;41092:1;41078:16;:::i;:::-;;:::i;:::-;41070:32;;:::o;41000:54::-;41039:6;;:15;;41049:5;41039:15;:::i;:::-;;;:::i;:::-;;;41000:54;;:35;41025:5;;:10;;41034:1;41025:10;:::i;:::-;;;:::i;:::-;;41000:35;;1500:62:2;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34670:182:182:-;34822:23;34670:182;34822:23;;:::i;:::-;34670:182::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;1638:85:2:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:38701:182:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;26227:224;;;;;26329:13;26341:1;26329:13;:::i;:::-;26366:3;26344:1;:20;;26348:16;:9;;:16;;:::i;:::-;26344:20;:::i;:::-;;;:::i;:::-;;;;;26385:24;:4;:24;:::i;:::-;;;26410:9;26421:12;;:9;;26431:1;26421:12;;:::i;:::-;;:::i;:::-;26385:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26366:3;26385:49;;;26366:3;;;:::i;:::-;26329:13;;26385:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;26344:20::-;;;;;;26227:224::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;44113:757::-;44228:60;44236:10;:28;;44250:14;;;:::i;:::-;44236:28;:::i;:::-;;;:::i;:::-;;44228:60;:::i;:::-;44481:72;44489:43;:33;:24;:13;44503:9;44489:24;;:::i;:::-;:33;:::i;:::-;44523:8;44489:43;;:::i;:::-;44481:72;:::i;:::-;44639:33;44564:65;44594:35;:25;:14;44609:9;44594:25;;:::i;:::-;44620:8;44594:35;;:::i;:::-;44564:65;:::i;:::-;44639:12;44654:18;44639:5;:12;:33;:::i;:::-;44682:44;:34;:27;:16;44699:9;44682:27;;:::i;:::-;:34;:::i;:::-;44717:8;44682:44;;:::i;:::-;;44736:65;44778:23;44785:15;44778:23;:::i;:::-;44736:39;:29;:18;44755:9;44736:29;;:::i;:::-;44766:8;44736:39;;:::i;:::-;:65;:::i;:::-;44846:8;44856:6;;44817:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;44113:757::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33212:683::-;33742:146;33212:683;33786:92;33212:683;;33786:92;;33742:30;:25;33786:92;33212:683;33504:70;33512:18;:11;33786:92;33212:683;;;;33426:68;33434:10;:38;;33448:24;;:13;33462:9;33448:24;;:::i;:::-;;:::i;:::-;33434:38;:::i;:::-;;;:::i;:::-;;33426:68;:::i;:::-;33512:11;:::i;:::-;:18;;:::i;:::-;:44;;33534:22;;:::i;:::-;33512:44;:::i;:::-;;;:::i;:::-;;;33504:70;:::i;:::-;33584:47;33592:8;:20;;33604:8;33592:20;:::i;:::-;;;:::i;:::-;;;33584:47;:::i;:::-;33641:90;33649:32;:25;:14;33664:9;33649:25;;:::i;:::-;:32;:::i;:::-;:57;;33684:22;;:::i;:::-;33649:57;:::i;:::-;;;:::i;:::-;;33641:90;:::i;:::-;33742:14;:25;:::i;:::-;:30;:::i;:::-;33811:4;;33827:8;33847;33867;33786:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;33742:146;:::i;:::-;33212:683::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;28053:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;27976:884::-;28074:67;28104:37;:25;:14;28119:9;28104:25;;:::i;:::-;28130:10;28104:37;;:::i;:::-;28074:67;:::i;:::-;28175:5;:12;;:5;:12;;:::i;:::-;28201:9;;:31;;28214:18;28201:31;:::i;:::-;;;:::i;:::-;;28197:102;;28395:9;:31;;28408:18;28395:31;:::i;:::-;;;:::i;:::-;;:67;;;;27976:884;28391:104;;28639:21;28610:19;28595:34;28610:19;28595:12;:5;:12;:34;:::i;:::-;28639:17;:21;28659:1;28639:21;:::i;:::-;:5;:17;:21;:::i;:::-;28670:43;:31;:27;:16;28687:9;28670:27;;:::i;:::-;:31;:::i;:::-;28702:10;28670:43;;:::i;:::-;;28748:9;28759:10;28729:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;28810:10;;28822:9;28833:19;;28785:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27976:884::o;28391:104::-;28478:7;;;:::o;28395:67::-;28430:9;;:32;;28443:19;28430:32;:::i;:::-;;;:::i;:::-;;28395:67;;28197:102;28248:40;;:::i;:::-;6415:38701;;;28248:40;;;;;;;;:::i;:::-;;;;27976:884;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29569:585::-;29676:10;:24;;29690:10;29676:24;:::i;:::-;;;:::i;:::-;;:66;;;;29569:585;29668:93;;;:::i;:::-;29772:45;29780:8;:14;;29792:2;29780:14;:::i;:::-;;;:::i;:::-;;;29772:45;:::i;:::-;29847:50;29855:9;:14;;29868:1;29855:14;:::i;:::-;;;:::i;:::-;;;29847:50;:::i;:::-;29908:169;29978:8;29938:139;29999:9;29938:139;30025:41;;:27;:16;30042:9;30025:27;;:::i;:::-;:41;;:::i;:::-;29938:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;29908:27;:16;29925:9;29908:27;;:::i;:::-;:169;:::i;:::-;30127:8;30137:9;30093:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29569:585::o;29676:66::-;29704:10;29668:93;29704:10;:38;;29718:24;;:13;29732:9;29718:24;;:::i;:::-;;:::i;:::-;29704:38;:::i;:::-;;;:::i;:::-;;29676:66;;;;6415:38701;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;24826:1348::-;24910:65;24940:35;:25;:14;24955:9;24940:25;;:::i;:::-;24966:8;24940:35;;:::i;:::-;24910:65;:::i;:::-;25028:9;25017:21;25028:9;25017:21;:::i;:::-;25138:12;;:5;:12;;:::i;:::-;:34;;25154:18;25138:34;:::i;:::-;;;:::i;:::-;;25134:47;;25195:19;;:5;:19;;:::i;:::-;:24;;25218:1;25195:24;:::i;:::-;;;:::i;:::-;;25191:92;;25385:25;25311:37;:15;25329:19;;:5;:19;;:::i;:::-;25311:37;;:::i;:::-;25385:25;25395:15;;:6;:15;;:::i;:::-;25385:25;:::i;:::-;;;:::i;:::-;25511:16;:34;;25530:15;25511:34;:::i;:::-;;;:::i;:::-;;:78;;;;25548:15;;25511:78;25604:11;;:31;;25618:17;;:5;:17;;:::i;:::-;25604:31;:::i;:::-;;;:::i;:::-;;25600:568;;25511:78;24826:1348;;;;;:::o;25600:568::-;25651:31;25671:11;25651:17;:5;:17;:31;:::i;:::-;25696:26;;25721:1;25696:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;25741:31;;25756:16;;25741:11;25756:6;:16;;:::i;:::-;25741:31;:::i;:::-;;;:::i;:::-;;;:69;;;25600:568;25737:421;;25600:568;;;;25737:421;25883:33;25853:12;;:5;:12;;:::i;:::-;25898:18;25883:12;25898:18;25883:5;:12;:33;:::i;:::-;25934:44;:34;:27;:16;25951:9;25934:27;;:::i;:::-;:34;:::i;:::-;25969:8;25934:44;;:::i;:::-;;26022:9;26033:8;;26043:11;26002:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;26103:8;26113:9;26124:18;;26078:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;25737:421;;;;;;25741:69;25776:5;:12;;:5;:12;;:::i;:::-;:34;;25792:18;25776:34;:::i;:::-;;;:::i;:::-;;;25741:69;;25511:78;25566:23;25572:16;25566:23;:::i;:::-;25511:78;;25191:92;25235:7;;;;:::o;25134:47::-;25174:7;;;;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;38174:156::-;38298:25;38291:32;38174:156;38254:25;;:::i;:::-;38298:14;;:25;:::i;:::-;38291:32;:::i;:::-;;:::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;27342:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;27264:514::-;27363:67;27393:37;:25;:14;27408:9;27393:25;;:::i;:::-;27419:10;27393:37;;:::i;:::-;27363:67;:::i;:::-;27464:5;:12;;:5;:12;;:::i;:::-;27490:9;;:31;;27503:18;27490:31;:::i;:::-;;;:::i;:::-;;27486:103;;27599:33;27614:18;27599:12;27614:18;27599:5;:12;:33;:::i;:::-;27642:46;:34;:27;:16;27659:9;27642:27;;:::i;:::-;:34;:::i;:::-;27677:10;27642:46;;:::i;:::-;;27729:10;;27741:9;27752:18;;27704:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27264:514::o;27486:103::-;27537:41;;:::i;:::-;6415:38701;;;27537:41;;;;;;;;:::i;:::-;;;;27264:514;;;;:::i;:::-;:::o;6415:38701::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;37851:264::-;;38063:33;:45;37851:264;;38063:23;:45;37851:264;38033:7;;:::i;:::-;38063:12;;:23;:::i;:::-;:33;:::i;:::-;38097:10;;38063:45;;:::i;:::-;;:::i;:::-;38056:52;:::o;1232:99:3:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:38701:182:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;42932:886;;43767:34;:27;:44;42932:886;43027:10;:38;;43041:24;;:13;43055:9;43041:24;;:::i;:::-;;:::i;:::-;43027:38;:::i;:::-;;;:::i;:::-;;:63;;;;42932:886;43019:90;;;:::i;:::-;43120:64;43149:35;:25;:14;43164:9;43149:25;;:::i;:::-;43175:8;43149:35;;:::i;:::-;43120:64;:::i;:::-;43294:12;;:5;:12;;:::i;:::-;:34;;43310:18;43294:34;:::i;:::-;;;:::i;:::-;;43290:416;;42932:886;43716:13;:41;:31;:24;:13;43730:9;43716:24;;:::i;:::-;:31;:::i;:::-;43748:8;43716:41;;:::i;:::-;;43767:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;42932:886::o;43290:416::-;43514:181;43387:9;43443:57;:52;43376:21;43387:9;43376:21;:::i;:::-;43470:25;43478:16;;43443:24;43451:15;;:6;:15;;:::i;:::-;43443:24;:::i;:::-;43478:6;:16;;:::i;:::-;43470:25;:::i;:::-;43443:52;;:::i;:::-;:57;43498:2;43443:57;:::i;:::-;;;:::i;:::-;43539:19;;:5;:19;;:::i;:::-;:23;;43561:1;43539:23;:::i;:::-;;;:::i;:::-;;:89;;;;43290:416;43514:181;;;:::i;:::-;43290:416;;;43539:89;43566:62;:15;;;:37;:62;:15;43584:19;;43566:15;43584:5;:19;;:::i;:::-;43566:37;;:::i;:::-;43607:21;43566:62;:::i;:::-;;;:::i;:::-;;;43539:89;;;;43027:63;43069:10;43019:90;43069:10;:21;;43083:7;;:::i;:::-;43069:21;:::i;:::-;;;:::i;:::-;;43027:63;;;;38403:374;;38607:35;38578:64;38403:374;38499:4;;:::i;:::-;38558:9;38607:25;38547:21;38558:9;38547:21;:::i;:::-;38607:14;;:25;:::i;:::-;:35;:::i;:::-;38578:64;:::i;:::-;38657:19;;:5;:19;;:::i;:::-;:24;;38680:1;38657:24;:::i;:::-;;;:::i;:::-;;38653:42;;38713:57;38755:15;;38714:37;38713:57;38714:15;38732:19;38714:15;;38732:5;:19;;:::i;:::-;38714:37;;:::i;:::-;38755:6;:15;;:::i;:::-;38713:57;:::i;:::-;;;:::i;:::-;;38706:64;:::o;38653:42::-;38690:5;;;38683:12;:::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:3:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;32669:225:182:-;32836:41;:27;:51;32669:225;32758:68;32766:10;:38;;32780:24;;:13;32794:9;32780:24;;:::i;:::-;;:::i;:::-;32766:38;:::i;:::-;;;:::i;:::-;;32758:68;:::i;:::-;32836:16;;:27;:::i;:::-;:41;:51;:::i;:::-;32669:225::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;32015:347;32107:53;32115:10;:24;;32129:10;32115:24;:::i;:::-;;;:::i;:::-;;32107:53;:::i;:::-;32170:75;32178:48;:38;:31;:20;32199:9;32178:31;;:::i;:::-;:38;:::i;:::-;32217:8;32178:48;;:::i;:::-;32170:75;:::i;:::-;32255:44;:34;:27;:16;32272:9;32255:27;;:::i;:::-;:34;:::i;:::-;32290:8;32255:44;;:::i;:::-;;32346:8;32314:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32015:347::o;6415:38701::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38824:443::-;38951:27;38919:59;38824:443;38885:22;;:::i;:::-;38951:16;;:27;:::i;:::-;38919:59;:::i;:::-;39037:15;;:6;:15;;:::i;:::-;:20;;39056:1;39037:20;:::i;:::-;;;:::i;:::-;;39033:95;;38824:443;39141:16;;:6;:16;;:::i;:::-;:21;;39161:1;39141:21;:::i;:::-;;;:::i;:::-;;39137:100;;38824:443;39247:13;:::o;39137:100::-;39178:48;39197:29;;:::i;:::-;39178:16;:6;:16;:48;:::i;:::-;39137:100;;39033:95;39073:44;39091:26;;:::i;:::-;39073:15;:6;:15;:44;:::i;:::-;39033:95;;6415:38701;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:46:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:2:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:3;;;;;;1901:40:2;;;;;;:::i;:::-;;;;8844:165:46;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:36:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:38701:182:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;16445:2218::-;;;;;;16647:65;16677:35;:25;:14;16692:9;16677:25;;:::i;:::-;16703:8;16677:35;;:::i;:::-;16647:65;:::i;:::-;16765:9;16754:21;16765:9;16754:21;:::i;:::-;16852:5;16844:66;16852:12;;:5;:12;;:::i;:::-;:34;;16868:18;16852:34;:::i;:::-;;;:::i;:::-;;;16844:66;:::i;:::-;16972:38;:28;:24;:13;16986:9;16972:24;;:::i;:::-;:28;:::i;:::-;17001:8;16972:38;;:::i;:::-;;18062:20;;17068:12;;:5;:12;;:::i;:::-;17112:15;17090:37;17112:15;17090:19;:5;:19;:37;:::i;:::-;17137:42;17161:18;17171:7;;17161:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17137:21;:5;:21;:42;:::i;:::-;17189:21;;17209:1;17189:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;17220:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;17310:20;;:::i;:::-;17344:10;;:15;;17358:1;17344:15;:::i;:::-;;;:::i;:::-;;17340:393;;;;17743:24;17387:18;17340:393;;17743:12;17758:9;17743:5;:12;:24;:::i;:::-;17811:9;:31;;17824:18;17811:31;:::i;:::-;;;:::i;:::-;;:66;;;17340:393;17807:196;;17340:393;18062:20;;:::i;:::-;:42;;;17340:393;18058:118;;17340:393;18209:9;;;18220:11;18233:8;18243:10;18255:15;;18191:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18286:9;:22;;18299:9;18286:22;:::i;:::-;;;:::i;:::-;;18282:114;;17340:393;18473:15;;;;;:::i;:::-;:29;;18492:10;18500:1;18492:10;:::i;:::-;18473:29;:::i;:::-;;;:::i;:::-;;18469:188;;17340:393;16445:2218;;:::o;18469:188::-;18522:49;:33;18539:15;;;:::i;:::-;18522:33;:::i;:::-;:49;:::i;:::-;;;18572:8;18582:9;18600:15;18593:23;18600:15;18593:23;:::i;:::-;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;18469:188;18518:129;;;;;;;;;;;18469:188;;;;18518:129;;;;;;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18282:114::-;18343:9;18354:8;18364:9;18375;18329:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18282:114;;;;18058:118;18157:7;18136:9;;18147:8;;18157:7;;;;:::i;:::-;18058:118;;;;18062:42;18086:7;:14;:7;;:14;;:::i;:::-;:18;;18103:1;18086:18;:::i;:::-;;;:::i;:::-;;18062:42;;17807:196;17893:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;17925:8;17893:41;;:::i;:::-;;17972:9;17983:8;17953:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;17807:196;;17811:66;17846:9;;:31;;17859:18;17846:31;:::i;:::-;;;:::i;:::-;;;17811:66;;17340:393;17426:10;:16;;17439:3;17426:16;:::i;:::-;;;:::i;:::-;;17422:311;;;;17743:24;17470:19;17422:311;;17340:393;;17422:311;17743:24;17611:19;17668:9;17714:7;17668:9;17679:11;;17692:8;17702:10;17714:7;;;;;;:::i;:::-;17422:311;;9090:115:46;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:38701:182:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:46:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:38701:182:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:30:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:38701:182:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;41446:705::-;;;;;41633:26;;:::i;:::-;41713:3;41699:27;41713:12;:3;41719:6;41713:12;;:::i;:::-;41699:27;:::i;:::-;41752:1;41736:17;41752:1;41736:17;:::i;:::-;41781:6;41798:3;41789:1;:7;;41793:3;41789:7;:::i;:::-;;;:::i;:::-;;;;;41830:30;:27;:24;:13;41844:9;41830:24;;:::i;:::-;:27;:::i;:::-;41858:1;41830:30;;:::i;:::-;41878:46;41899:9;41910:2;41914:9;41878:46;;:::i;:::-;41874:126;;41798:3;;;;;:::i;:::-;41769:18;;41874:126;41798:3;41958:2;;41944:16;41978:7;41958:2;41944:16;:4;41949:5;;41944:16;;;:::i;:::-;;:::i;:::-;41978:7;:::i;:::-;41874:126;;;;41789:7;;;;;;;42032:20;42046:5;42032:20;:::i;:::-;42079:1;42067:13;42079:1;42067:13;:::i;:::-;42093:3;42082:1;:9;;42086:5;42082:9;:::i;:::-;;;:::i;:::-;;;;;42093:3;42127:4;42112:22;42127:7;;:4;42132:1;42127:7;;:::i;:::-;;:::i;:::-;42112:22;:9;42122:1;;42112:22;;;:::i;:::-;;:::i;:::-;42093:3;:::i;:::-;42067:13;;42082:9;;;;;41446:705::o;8607:156:46:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:38701:182:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:46:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:38701:182:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:36:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:38701:182:-;;-1:-1:-1;6415:38701:182;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:36:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:182;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;23148:1016::-;;;;;;23584:17;;23598:3;23584:17;:::i;:::-;;;:::i;:::-;;;23580:513;;23148:1016;;;:::o;23580:513::-;23638:23;23645:15;23638:23;:::i;:::-;23694:39;;:29;:18;23713:9;23694:29;;:::i;:::-;23724:8;23694:39;;:::i;:::-;;:::i;:::-;23751:9;:14;;23764:1;23751:14;:::i;:::-;;;:::i;:::-;;:65;;;;;23580:513;23747:336;;;23580:513;;;;23747:336;23836:53;23878:11;23836:39;:29;:18;23855:9;23836:29;;:::i;:::-;23866:8;23836:39;;:::i;:::-;:53;:::i;:::-;23941:8;23912:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;23747:336;;;;;23751:65;23769:23;:11;;;:23;:::i;:::-;:47;;23796:20;;:::i;:::-;23769:47;:::i;:::-;;;:::i;:::-;;;23751:65;;;6415:38701;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;18801:46::-;18845:2;;;:::i;:::-;18801:46;:::o;18845:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;18854:1122::-;;18962:14;:7;;:14;;:::i;:::-;:19;;18980:1;18962:19;:::i;:::-;;;:::i;:::-;;18958:32;;19067:14;:7;;:14;;:::i;:::-;:23;;19084:6;19067:23;:::i;:::-;;;:::i;:::-;;19063:36;;19240:31;19109:25;;:::i;:::-;19240:4;:22;:4;:22;:::i;:::-;:31;:22;19263:7;;19240:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;18854:1122;19236:152;;;;;;;;;;;19472:12;:5;:12;:::i;:::-;:31;;19487:16;;:::i;:::-;19472:31;:::i;:::-;;;:::i;:::-;;:65;;;;19506:16;;:::i;:::-;19472:65;19709:28;:4;:28;:::i;:::-;;;19738:9;19749:8;19759:5;19766:8;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19472:65;19705:265;;;;;;;;;;;18854:1122::o;19705:265::-;;;;;;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19472:65::-;19525:12;:5;:12;:::i;:::-;19472:65;;19236:152;19371:7;;;:::o;19236:152::-;;;;;;;19240:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;19063:36;19092:7;;;;:::o;18958:32::-;18983:7;;;;:::o;4474:107:46:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:38701:182:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:46:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;42157:511:182:-;42265:4;;:::i;:::-;42364:20;42363:51;42364:50;:40;:31;:20;42385:9;42364:31;;:::i;:::-;:40;:::i;:::-;42405:8;42364:50;;:::i;:::-;42363:51;;:::i;:::-;42359:69;;42439:64;42468:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;42439:64;:::i;:::-;42517:19;;:5;:19;;:::i;:::-;:24;;42540:1;42517:24;:::i;:::-;;;:::i;:::-;;:62;;;;42157:511;42513:80;;42611:50;:37;:50;:15;42629:19;;42611:15;42629:5;:19;;:::i;:::-;42611:37;;:::i;:::-;42652:9;42611:50;:::i;:::-;;;:::i;:::-;;;42604:57;:::o;42513:80::-;42588:5;;;42581:12;:::o;42517:62::-;42545:5;:12;;:5;:12;;:::i;:::-;:34;;42561:18;42545:34;:::i;:::-;;;:::i;:::-;;42517:62;;42359:69;42423:5;;;;42416:12;:::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:46:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:38701:182:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:36:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"101658":[{"start":3807,"length":32},{"start":14646,"length":32}],"101806":[{"start":5216,"length":32},{"start":9933,"length":32},{"start":13367,"length":32},{"start":22350,"length":32},{"start":25355,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec\",\"dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319","urls":["bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec","dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x"],"license":"MIT"}},"version":1},"id":182} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617b106104d38239608051818181610edf0152613936015260a051818181611460015281816126cd015281816134370152818161574e015261630b0152617b1090f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617fe38038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:183:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;13060:465::-;;;;;:::i;:::-;13147:24;;13252:95;13224:284;13365:35;13418:14;13224:284;13418:14;13450:13;13481;13489:4;13481:13;:::i;:::-;13224:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13201:317;;;;:::i;:::-;;;:::i;:::-;;13182:336;;13060:465::o;984:1491:3:-;;;;:::i;:::-;:::o;6415:38701:183:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:2:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:183;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:38701:183:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:183:-:0;;;;;;;;;-1:-1:-1;6415:38701:183;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;11660:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:38701;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7851:61::-;7903:9;;;:::i;:::-;7851:61;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;12224:30::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14180:52::-;14223:9;;;:::i;:::-;14180:52;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8133:41::-;;;:::o;6415:38701::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;12352:53::-;12398:7;;;:::i;:::-;12352:53;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10898:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:183;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;39843:43::-;39883:3;;;:::i;:::-;39843:43;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;11530:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;12045:35::-;;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32979:51::-;33028:2;;;:::i;:::-;32979:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7980:55::-;8034:1;;;:::i;:::-;7980:55;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;33154:51::-;33203:2;;;:::i;:::-;33154:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;11816:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;12131:29::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10758:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8447:189::-;8492:144;8447:189;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30254:263::-;30478:24;:32;30254:263;30336:53;30344:10;:24;;30358:10;30344:24;:::i;:::-;;;:::i;:::-;;30336:53;:::i;:::-;30399:69;30407:24;;:13;30421:9;30407:24;;:::i;:::-;;:::i;:::-;:38;;30435:10;30443:1;30435:10;:::i;:::-;30407:38;:::i;:::-;;;:::i;:::-;;30399:69;:::i;:::-;30478:13;;:24;:::i;:::-;:32;:::i;:::-;30254:263::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;37647:147::-;37766:21;37647:147;37725:22;;:::i;:::-;37777:9;37766:21;:::i;:::-;37759:28;:::o;6415:38701::-;;;:::o;36547:176::-;36667:35;:49;36547:176;36667:25;:49;36547:176;36641:7;;:::i;:::-;36667:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;36660:56;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:183;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33980:640::-;;;;;34097:68;34105:10;:38;;34119:24;;:13;34133:9;34119:24;;:::i;:::-;;:::i;:::-;34105:38;:::i;:::-;;;:::i;:::-;;34097:68;:::i;:::-;34175:77;34183:18;:11;;:18;;:::i;:::-;:44;;34205:22;;:::i;:::-;34183:44;:::i;:::-;;;:::i;:::-;;;34175:77;:::i;:::-;34262:32;;34269:25;:14;34284:9;34269:25;;:::i;:::-;34262:32;:::i;:::-;34309:13;34321:1;34309:13;:::i;:::-;34348:3;34324:1;:22;;34328:18;:11;;:18;;:::i;:::-;34324:22;:::i;:::-;;;:::i;:::-;;;;;34348:3;34381:11;34367:85;34375:33;:26;34381:19;:14;:11;;34393:1;34381:14;;:::i;:::-;:19;;;;;:::i;:::-;34375:26;;:::i;:::-;:33;;:::i;:::-;:59;;34412:22;;:::i;:::-;34375:59;:::i;:::-;;;:::i;:::-;;;34367:85;:::i;:::-;34466:77;34474:23;;:14;:11;;34486:1;34474:14;;:::i;:::-;:23;;:::i;:::-;:50;;34501:23;;:14;:11;;34513:1;34501:14;;:::i;:::-;:23;;:::i;:::-;34474:50;:::i;:::-;;;:::i;:::-;;;34466:77;:::i;:::-;34557:46;:30;:25;:14;34572:9;34557:25;;:::i;:::-;:30;:::i;:::-;34588:14;:11;;34600:1;34588:14;;:::i;:::-;34557:46;;:::i;:::-;34348:3;:::i;:::-;34309:13;;34324:22;;;;;;33980:640::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30760:1036::-;30850:53;30858:10;:24;;30872:10;30858:24;:::i;:::-;;;:::i;:::-;;30850:53;:::i;:::-;30913:47;30921:8;:22;;30933:10;30941:1;30933:10;:::i;:::-;30921:22;:::i;:::-;;;:::i;:::-;;;30913:47;:::i;:::-;30970:76;30978:45;:35;:31;:20;30999:9;30978:31;;:::i;:::-;:35;:::i;:::-;31014:8;30978:45;;:::i;:::-;30970:76;:::i;:::-;31439:42;;31446:35;:25;:14;31461:9;31446:25;;:::i;:::-;31472:8;31446:35;;:::i;:::-;31439:42;:::i;:::-;31672:63;31717:18;31672:42;:35;:25;:14;31687:9;31672:25;;:::i;:::-;31698:8;31672:35;;:::i;:::-;:42;:63;:::i;:::-;31780:8;31750:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30760:1036::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34923:188:183:-;35078:26;34923:188;35078:26;;:::i;:::-;34923:188::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;7140:166;;7298:1;7140:166;;;;;;;7200:88;7208:52;:40;:31;15071:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;15100:9;:27;;15112:15;15100:27;:::i;:::-;;;:::i;:::-;;15096:95;;15205:27;:15;:27;15223:9;15205:27;:::i;:::-;;;:::i;:::-;:47;;15235:17;;:::i;:::-;15205:47;:::i;:::-;;;:::i;:::-;;15201:135;;15921:7;15418:18;;15759:25;15794:50;15418:18;;15390:235;15418:18;15390:235;15418:18;15759:25;15418:18;;;15566;15418;;:::i;:::-;15454:10;;15482:9;15509:11;15538:10;15576:7;15566:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;15602:9;15390:235;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15367:268;;;;:::i;:::-;;;:::i;:::-;;15672:58;15701:16;15672:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15662:69;;;;:::i;:::-;;;:::i;:::-;;15774:9;15759:25;:::i;:::-;;;:::i;:::-;15802:20;;15812:10;15802:20;:::i;:::-;;;:::i;:::-;;15794:50;:::i;:::-;15884:11;15897:10;15909;15921:7;;;;:::i;:::-;14803:1133::o;15201:135::-;15301:23;15308:15;15301:23;:::i;:::-;15275:50;;;;;;;;;;;;;;;:::i;:::-;;;;15096:95;15167:23;15174:15;15167:23;:::i;:::-;15136:55;;;;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;35274:160::-;;35392:35;35274:160;35348:25;;:::i;:::-;35403:7;;35392:35;;;;:::i;:::-;35385:42;:::o;43895:136::-;43991:31;:24;:33;43895:136;43965:7;;:::i;:::-;43991:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;43984:40;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;37041:359::-;;37119:16;;:::i;:::-;37163;:36;:34;:27;:16;37180:9;37163:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37249:5;37235:20;37249:5;37235:20;:::i;:::-;37282:1;37270:13;37282:1;37270:13;:::i;:::-;37296:3;37285:1;:9;;37289:5;37285:9;:::i;:::-;;;:::i;:::-;;;;;37296:3;37327:16;37315:45;37327:33;:30;:27;:16;37344:9;37327:27;;:::i;:::-;:30;:::i;:::-;37358:1;37327:33;;:::i;:::-;37315:45;:6;37322:1;;37315:45;;;:::i;:::-;;:::i;:::-;37296:3;:::i;:::-;37270:13;;37285:9;;;;;37380:13;:::o;6415:38701::-;;;:::o;35990:261::-;;36076:4;;:::i;:::-;36099:14;:42;;:35;:25;:14;36114:9;36099:25;;:::i;:::-;36125:8;36099:35;;:::i;:::-;:42;;:::i;:::-;:64;;36145:18;36099:64;:::i;:::-;;;:::i;:::-;;:145;;;;;35990:261;36092:152;;;:::o;36099:145::-;36179:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;36225:19;36179:65;:::i;:::-;;;:::i;:::-;;36099:145;;;;40097:200;40231:59;40097:200;40178:26;;:::i;:::-;40262:9;40273:1;40276:13;40231:59;40276:13;;:::i;:::-;40231:59;;:::i;:::-;;;:::i;:::-;40216:74;40097:200;:::o;7140:166::-;;7298:1;7140:166;;;;7200:88;7208:52;:40;:31;16286:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;16072:320::-;;16377:7;16072:320;;;;16353:10;16365;16377:7;;;;:::i;:::-;16072:320::o;:::-;;;;;;;;:::i;:::-;:::o;32433:178::-;;32554:40;:31;:50;32433:178;32531:4;;:::i;:::-;32554:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;32547:57;:::o;6415:38701::-;;;:::o;36307:173::-;36431:35;:42;36307:173;36431:25;:42;36307:173;36402:10;;:::i;:::-;36431:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;36424:49;:::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;20231:2843::-;;;;;20414:53;20422:10;:27;;20436:13;20444:4;20436:13;:::i;:::-;20422:27;:::i;:::-;;;:::i;:::-;;20414:53;:::i;:::-;20478:66;20519:25;:14;20534:9;20519:25;;:::i;:::-;20478:66;:::i;:::-;20651:8;20637:23;20651:8;20637:23;:::i;:::-;20687:1;20675:13;20687:1;20675:13;:::i;:::-;20704:3;20690:1;:12;;20694:8;20690:12;:::i;:::-;;;:::i;:::-;;;;;20704:3;20755:5;20723:47;20749:20;20755:13;:8;:5;20761:1;20755:8;;:::i;:::-;;:13;;20749:20;:::i;:::-;20739:31;;;;:::i;:::-;;;:::i;:::-;;20723:47;:10;20734:1;;20723:47;;;:::i;:::-;;:::i;:::-;20704:3;:::i;:::-;20675:13;;20690:12;;;;;;;20813:18;:11;:18;:::i;:::-;:22;;20834:1;20813:22;:::i;:::-;;;:::i;:::-;;20914:26;;;:::i;:::-;20954:14;;20950:237;;20670:111;21267:13;21279:1;21267:13;:::i;:::-;21296:3;21282:1;:12;;21286:8;21282:12;:::i;:::-;;;:::i;:::-;;;;;21328:4;21371:5;21449:14;21445:737;;21296:3;22244:5;;;;;21296:3;22244:5;22240:198;;21296:3;;;;;:::i;:::-;21267:13;;22240:198;22320:5;22303:13;:8;22269:33;:48;22320:5;22269:23;22320:14;;:8;22269:65;22320:5;22326:1;22320:8;;:::i;:::-;;:14;;:::i;:::-;22269:12;;:23;:::i;:::-;:33;:::i;:::-;22303:5;22309:1;22303:8;;:::i;:::-;;:13;;22269:48;;:::i;:::-;:65;:::i;:::-;22372:9;;22383:8;22393:5;22408:14;;:8;22393:13;:8;:5;22399:1;22393:8;;:::i;:::-;;:13;;22408:5;22414:1;22408:8;;:::i;:::-;;:14;;:::i;:::-;22357:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;22240:198;;;;;21445:737;21500:1;;;;;;21488:13;21500:1;21488:13;:::i;:::-;21527:3;21503:1;:22;;21507:18;:11;:18;:::i;:::-;21503:22;:::i;:::-;;;:::i;:::-;;;;;21558:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;21575:12;;:9;21585:1;21575:12;;:::i;:::-;;:::i;:::-;21558:29;:::i;:::-;;;:::i;:::-;;21554:433;;21527:3;;;:::i;:::-;21488:13;;21554:433;21635:4;;;;;;;21296:3;21635:4;;;;;;21669:5;;:14;;:8;:5;21675:1;21669:8;;:::i;:::-;;:14;;:::i;:::-;:40;;21686:23;;:14;:11;21698:1;21686:14;;:::i;:::-;;:23;;:::i;:::-;21669:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;21554:433;21665:269;;;;;;21554:433;22094:18;21959:5;21483:522;22094:18;;:::i;:::-;22090:78;;21483:522;21445:737;;;;;;;22090:78;22144:5;;22090:78;;21665:269;21806:9;;;21817:8;21827:13;:8;:5;21833:1;21827:8;;:::i;:::-;;:13;;21790:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22094:18;21902:5;21665:269;;;;;21669:84;21713:40;:5;;;21730:14;21713:40;:5;:14;;:8;21730:23;21713:5;21730:23;21713:5;:8;:::i;:::-;;:14;;:::i;:::-;21730:11;:14;:::i;:::-;;:23;;:::i;:::-;21713:40;:::i;:::-;;;:::i;:::-;;21669:84;;;;;;21503:22;;;;;;;21296:3;21503:22;;;22094:18;21503:22;;;;21282:12;;;;;;;;;;22509:13;22521:1;22509:13;:::i;:::-;22504:564;22548:3;22524:1;:22;;22528:18;:11;:18;:::i;:::-;22524:22;:::i;:::-;;;:::i;:::-;;;;;22571:24;22572:23;;:14;:11;22584:1;22572:14;;:::i;:::-;;:23;;:::i;:::-;22571:24;;:::i;:::-;22567:38;;22638:37;22648:26;22654:19;:14;:11;22666:1;22654:14;;:::i;:::-;;:19;22648:26;:::i;:::-;22638:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;22702:5;;22738:1;22726:13;22738:1;22726:13;:::i;:::-;22764:3;22741:1;:21;;22745:17;:10;:17;:::i;:::-;22741:21;:::i;:::-;;;:::i;:::-;;;;;22791:13;;:10;22802:1;22791:13;;:::i;:::-;;:::i;:::-;:24;;22808:7;22791:24;:::i;:::-;;;:::i;:::-;;22787:110;;22764:3;;;:::i;:::-;22726:13;;22787:110;22847:4;;;;;22548:3;22847:4;;22928:6;22847:4;22721:190;22928:6;;:::i;:::-;22924:134;;22721:190;22509:13;22548:3;:::i;:::-;22509:13;;;;22924:134;22975:9;22986:8;22996:19;:14;:11;23008:1;22996:14;;:::i;:::-;;:19;22959:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22924:134;;22741:21;;;;;22548:3;22741:21;;22928:6;22741:21;;;22567:38;22597:8;;22548:3;22597:8;;;22524:22;;;;;;20231:2843::o;20950:237::-;21010:11;;;;20996:33;21010:18;:11;;;;;;:18;:::i;:::-;20996:33;:::i;:::-;21060:1;21048:13;21060:1;21048:13;:::i;:::-;21087:3;21063:1;:22;;21067:18;:11;:18;:::i;:::-;21063:22;:::i;:::-;;;:::i;:::-;;;;;21087:3;21141:11;21110:52;21125:37;21135:26;21141:19;:14;:11;21153:1;21141:14;;:::i;:::-;;:19;21135:26;:::i;:::-;21125:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;21110:52;:9;21120:1;;21110:52;;;:::i;:::-;;:::i;:::-;21087:3;:::i;:::-;21048:13;;21063:22;;;;;;;;;;20950:237;;1500:62:2;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:38701:183:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;36769:211::-;36931:42;36769:211;36938:25;:35;36769:211;36895:20;;:::i;:::-;36938:14;;:25;:::i;:::-;:35;:::i;:::-;36931:42;:::i;:::-;;:::o;6415:38701::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;44950:164::-;45068:39;44950:164;45068:29;:39;44950:164;45043:6;;:::i;:::-;45068:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;45061:46;:::o;2244:229:3:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;37448:142:183;37547:34;:27;:36;37448:142;37521:7;;:::i;:::-;37547:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37540:43;:::o;6415:38701::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;40660:780::-;;;;;40824:26;;:::i;:::-;40852:13;;;:::i;:::-;40924:9;40913:21;40924:9;40913:21;:::i;:::-;40952:13;:33;:31;:24;:13;40966:9;40952:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;41000:6;:16;;:6;:16;;:::i;:::-;:21;;41020:1;41000:21;:::i;:::-;;;:::i;:::-;;:35;;;;40660:780;41000:54;;;;40660:780;40996:117;;41143:52;41151:6;41170:25;41178:16;;41143:24;41151:15;;41372:61;41151:6;;;:15;;:::i;:::-;41143:24;:::i;:::-;41178:6;:16;;:::i;:::-;41170:25;:::i;:::-;41143:52;;:::i;:::-;41225:5;;:21;;41233:13;;:::i;:::-;41225:21;:::i;:::-;;;:::i;:::-;;:45;;;;41249:13;;;:::i;:::-;41225:45;41294:18;:6;41303:9;41294:18;;:::i;:::-;:26;;41315:5;41294:26;:::i;:::-;;;:::i;:::-;;:55;;;;41323:5;;41294:55;41399:9;41410:6;41418:3;41423:9;41372:61;;:::i;:::-;40660:780;:::o;41294:55::-;41331:18;:6;;:18;:::i;:::-;41294:55;;41225:45;;;40996:117;41092:1;;;;;41078:16;;41092:1;41078:16;:::i;:::-;;:::i;:::-;41070:32;;:::o;41000:54::-;41039:6;;:15;;41049:5;41039:15;:::i;:::-;;;:::i;:::-;;;41000:54;;:35;41025:5;;:10;;41034:1;41025:10;:::i;:::-;;;:::i;:::-;;41000:35;;1500:62:2;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34670:182:183:-;34822:23;34670:182;34822:23;;:::i;:::-;34670:182::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;1638:85:2:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:38701:183:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;26227:224;;;;;26329:13;26341:1;26329:13;:::i;:::-;26366:3;26344:1;:20;;26348:16;:9;;:16;;:::i;:::-;26344:20;:::i;:::-;;;:::i;:::-;;;;;26385:24;:4;:24;:::i;:::-;;;26410:9;26421:12;;:9;;26431:1;26421:12;;:::i;:::-;;:::i;:::-;26385:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26366:3;26385:49;;;26366:3;;;:::i;:::-;26329:13;;26385:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;26344:20::-;;;;;;26227:224::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;44113:757::-;44228:60;44236:10;:28;;44250:14;;;:::i;:::-;44236:28;:::i;:::-;;;:::i;:::-;;44228:60;:::i;:::-;44481:72;44489:43;:33;:24;:13;44503:9;44489:24;;:::i;:::-;:33;:::i;:::-;44523:8;44489:43;;:::i;:::-;44481:72;:::i;:::-;44639:33;44564:65;44594:35;:25;:14;44609:9;44594:25;;:::i;:::-;44620:8;44594:35;;:::i;:::-;44564:65;:::i;:::-;44639:12;44654:18;44639:5;:12;:33;:::i;:::-;44682:44;:34;:27;:16;44699:9;44682:27;;:::i;:::-;:34;:::i;:::-;44717:8;44682:44;;:::i;:::-;;44736:65;44778:23;44785:15;44778:23;:::i;:::-;44736:39;:29;:18;44755:9;44736:29;;:::i;:::-;44766:8;44736:39;;:::i;:::-;:65;:::i;:::-;44846:8;44856:6;;44817:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;44113:757::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33212:683::-;33742:146;33212:683;33786:92;33212:683;;33786:92;;33742:30;:25;33786:92;33212:683;33504:70;33512:18;:11;33786:92;33212:683;;;;33426:68;33434:10;:38;;33448:24;;:13;33462:9;33448:24;;:::i;:::-;;:::i;:::-;33434:38;:::i;:::-;;;:::i;:::-;;33426:68;:::i;:::-;33512:11;:::i;:::-;:18;;:::i;:::-;:44;;33534:22;;:::i;:::-;33512:44;:::i;:::-;;;:::i;:::-;;;33504:70;:::i;:::-;33584:47;33592:8;:20;;33604:8;33592:20;:::i;:::-;;;:::i;:::-;;;33584:47;:::i;:::-;33641:90;33649:32;:25;:14;33664:9;33649:25;;:::i;:::-;:32;:::i;:::-;:57;;33684:22;;:::i;:::-;33649:57;:::i;:::-;;;:::i;:::-;;33641:90;:::i;:::-;33742:14;:25;:::i;:::-;:30;:::i;:::-;33811:4;;33827:8;33847;33867;33786:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;33742:146;:::i;:::-;33212:683::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;28053:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;27976:884::-;28074:67;28104:37;:25;:14;28119:9;28104:25;;:::i;:::-;28130:10;28104:37;;:::i;:::-;28074:67;:::i;:::-;28175:5;:12;;:5;:12;;:::i;:::-;28201:9;;:31;;28214:18;28201:31;:::i;:::-;;;:::i;:::-;;28197:102;;28395:9;:31;;28408:18;28395:31;:::i;:::-;;;:::i;:::-;;:67;;;;27976:884;28391:104;;28639:21;28610:19;28595:34;28610:19;28595:12;:5;:12;:34;:::i;:::-;28639:17;:21;28659:1;28639:21;:::i;:::-;:5;:17;:21;:::i;:::-;28670:43;:31;:27;:16;28687:9;28670:27;;:::i;:::-;:31;:::i;:::-;28702:10;28670:43;;:::i;:::-;;28748:9;28759:10;28729:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;28810:10;;28822:9;28833:19;;28785:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27976:884::o;28391:104::-;28478:7;;;:::o;28395:67::-;28430:9;;:32;;28443:19;28430:32;:::i;:::-;;;:::i;:::-;;28395:67;;28197:102;28248:40;;:::i;:::-;6415:38701;;;28248:40;;;;;;;;:::i;:::-;;;;27976:884;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29569:585::-;29676:10;:24;;29690:10;29676:24;:::i;:::-;;;:::i;:::-;;:66;;;;29569:585;29668:93;;;:::i;:::-;29772:45;29780:8;:14;;29792:2;29780:14;:::i;:::-;;;:::i;:::-;;;29772:45;:::i;:::-;29847:50;29855:9;:14;;29868:1;29855:14;:::i;:::-;;;:::i;:::-;;;29847:50;:::i;:::-;29908:169;29978:8;29938:139;29999:9;29938:139;30025:41;;:27;:16;30042:9;30025:27;;:::i;:::-;:41;;:::i;:::-;29938:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;29908:27;:16;29925:9;29908:27;;:::i;:::-;:169;:::i;:::-;30127:8;30137:9;30093:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29569:585::o;29676:66::-;29704:10;29668:93;29704:10;:38;;29718:24;;:13;29732:9;29718:24;;:::i;:::-;;:::i;:::-;29704:38;:::i;:::-;;;:::i;:::-;;29676:66;;;;6415:38701;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;24826:1348::-;24910:65;24940:35;:25;:14;24955:9;24940:25;;:::i;:::-;24966:8;24940:35;;:::i;:::-;24910:65;:::i;:::-;25028:9;25017:21;25028:9;25017:21;:::i;:::-;25138:12;;:5;:12;;:::i;:::-;:34;;25154:18;25138:34;:::i;:::-;;;:::i;:::-;;25134:47;;25195:19;;:5;:19;;:::i;:::-;:24;;25218:1;25195:24;:::i;:::-;;;:::i;:::-;;25191:92;;25385:25;25311:37;:15;25329:19;;:5;:19;;:::i;:::-;25311:37;;:::i;:::-;25385:25;25395:15;;:6;:15;;:::i;:::-;25385:25;:::i;:::-;;;:::i;:::-;25511:16;:34;;25530:15;25511:34;:::i;:::-;;;:::i;:::-;;:78;;;;25548:15;;25511:78;25604:11;;:31;;25618:17;;:5;:17;;:::i;:::-;25604:31;:::i;:::-;;;:::i;:::-;;25600:568;;25511:78;24826:1348;;;;;:::o;25600:568::-;25651:31;25671:11;25651:17;:5;:17;:31;:::i;:::-;25696:26;;25721:1;25696:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;25741:31;;25756:16;;25741:11;25756:6;:16;;:::i;:::-;25741:31;:::i;:::-;;;:::i;:::-;;;:69;;;25600:568;25737:421;;25600:568;;;;25737:421;25883:33;25853:12;;:5;:12;;:::i;:::-;25898:18;25883:12;25898:18;25883:5;:12;:33;:::i;:::-;25934:44;:34;:27;:16;25951:9;25934:27;;:::i;:::-;:34;:::i;:::-;25969:8;25934:44;;:::i;:::-;;26022:9;26033:8;;26043:11;26002:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;26103:8;26113:9;26124:18;;26078:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;25737:421;;;;;;25741:69;25776:5;:12;;:5;:12;;:::i;:::-;:34;;25792:18;25776:34;:::i;:::-;;;:::i;:::-;;;25741:69;;25511:78;25566:23;25572:16;25566:23;:::i;:::-;25511:78;;25191:92;25235:7;;;;:::o;25134:47::-;25174:7;;;;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;38174:156::-;38298:25;38291:32;38174:156;38254:25;;:::i;:::-;38298:14;;:25;:::i;:::-;38291:32;:::i;:::-;;:::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;27342:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;27264:514::-;27363:67;27393:37;:25;:14;27408:9;27393:25;;:::i;:::-;27419:10;27393:37;;:::i;:::-;27363:67;:::i;:::-;27464:5;:12;;:5;:12;;:::i;:::-;27490:9;;:31;;27503:18;27490:31;:::i;:::-;;;:::i;:::-;;27486:103;;27599:33;27614:18;27599:12;27614:18;27599:5;:12;:33;:::i;:::-;27642:46;:34;:27;:16;27659:9;27642:27;;:::i;:::-;:34;:::i;:::-;27677:10;27642:46;;:::i;:::-;;27729:10;;27741:9;27752:18;;27704:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27264:514::o;27486:103::-;27537:41;;:::i;:::-;6415:38701;;;27537:41;;;;;;;;:::i;:::-;;;;27264:514;;;;:::i;:::-;:::o;6415:38701::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;37851:264::-;;38063:33;:45;37851:264;;38063:23;:45;37851:264;38033:7;;:::i;:::-;38063:12;;:23;:::i;:::-;:33;:::i;:::-;38097:10;;38063:45;;:::i;:::-;;:::i;:::-;38056:52;:::o;1232:99:3:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:38701:183:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;42932:886;;43767:34;:27;:44;42932:886;43027:10;:38;;43041:24;;:13;43055:9;43041:24;;:::i;:::-;;:::i;:::-;43027:38;:::i;:::-;;;:::i;:::-;;:63;;;;42932:886;43019:90;;;:::i;:::-;43120:64;43149:35;:25;:14;43164:9;43149:25;;:::i;:::-;43175:8;43149:35;;:::i;:::-;43120:64;:::i;:::-;43294:12;;:5;:12;;:::i;:::-;:34;;43310:18;43294:34;:::i;:::-;;;:::i;:::-;;43290:416;;42932:886;43716:13;:41;:31;:24;:13;43730:9;43716:24;;:::i;:::-;:31;:::i;:::-;43748:8;43716:41;;:::i;:::-;;43767:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;42932:886::o;43290:416::-;43514:181;43387:9;43443:57;:52;43376:21;43387:9;43376:21;:::i;:::-;43470:25;43478:16;;43443:24;43451:15;;:6;:15;;:::i;:::-;43443:24;:::i;:::-;43478:6;:16;;:::i;:::-;43470:25;:::i;:::-;43443:52;;:::i;:::-;:57;43498:2;43443:57;:::i;:::-;;;:::i;:::-;43539:19;;:5;:19;;:::i;:::-;:23;;43561:1;43539:23;:::i;:::-;;;:::i;:::-;;:89;;;;43290:416;43514:181;;;:::i;:::-;43290:416;;;43539:89;43566:62;:15;;;:37;:62;:15;43584:19;;43566:15;43584:5;:19;;:::i;:::-;43566:37;;:::i;:::-;43607:21;43566:62;:::i;:::-;;;:::i;:::-;;;43539:89;;;;43027:63;43069:10;43019:90;43069:10;:21;;43083:7;;:::i;:::-;43069:21;:::i;:::-;;;:::i;:::-;;43027:63;;;;38403:374;;38607:35;38578:64;38403:374;38499:4;;:::i;:::-;38558:9;38607:25;38547:21;38558:9;38547:21;:::i;:::-;38607:14;;:25;:::i;:::-;:35;:::i;:::-;38578:64;:::i;:::-;38657:19;;:5;:19;;:::i;:::-;:24;;38680:1;38657:24;:::i;:::-;;;:::i;:::-;;38653:42;;38713:57;38755:15;;38714:37;38713:57;38714:15;38732:19;38714:15;;38732:5;:19;;:::i;:::-;38714:37;;:::i;:::-;38755:6;:15;;:::i;:::-;38713:57;:::i;:::-;;;:::i;:::-;;38706:64;:::o;38653:42::-;38690:5;;;38683:12;:::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:3:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;32669:225:183:-;32836:41;:27;:51;32669:225;32758:68;32766:10;:38;;32780:24;;:13;32794:9;32780:24;;:::i;:::-;;:::i;:::-;32766:38;:::i;:::-;;;:::i;:::-;;32758:68;:::i;:::-;32836:16;;:27;:::i;:::-;:41;:51;:::i;:::-;32669:225::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;32015:347;32107:53;32115:10;:24;;32129:10;32115:24;:::i;:::-;;;:::i;:::-;;32107:53;:::i;:::-;32170:75;32178:48;:38;:31;:20;32199:9;32178:31;;:::i;:::-;:38;:::i;:::-;32217:8;32178:48;;:::i;:::-;32170:75;:::i;:::-;32255:44;:34;:27;:16;32272:9;32255:27;;:::i;:::-;:34;:::i;:::-;32290:8;32255:44;;:::i;:::-;;32346:8;32314:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32015:347::o;6415:38701::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38824:443::-;38951:27;38919:59;38824:443;38885:22;;:::i;:::-;38951:16;;:27;:::i;:::-;38919:59;:::i;:::-;39037:15;;:6;:15;;:::i;:::-;:20;;39056:1;39037:20;:::i;:::-;;;:::i;:::-;;39033:95;;38824:443;39141:16;;:6;:16;;:::i;:::-;:21;;39161:1;39141:21;:::i;:::-;;;:::i;:::-;;39137:100;;38824:443;39247:13;:::o;39137:100::-;39178:48;39197:29;;:::i;:::-;39178:16;:6;:16;:48;:::i;:::-;39137:100;;39033:95;39073:44;39091:26;;:::i;:::-;39073:15;:6;:15;:44;:::i;:::-;39033:95;;6415:38701;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:46:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:2:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:3;;;;;;1901:40:2;;;;;;:::i;:::-;;;;8844:165:46;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:36:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:38701:183:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;16445:2218::-;;;;;;16647:65;16677:35;:25;:14;16692:9;16677:25;;:::i;:::-;16703:8;16677:35;;:::i;:::-;16647:65;:::i;:::-;16765:9;16754:21;16765:9;16754:21;:::i;:::-;16852:5;16844:66;16852:12;;:5;:12;;:::i;:::-;:34;;16868:18;16852:34;:::i;:::-;;;:::i;:::-;;;16844:66;:::i;:::-;16972:38;:28;:24;:13;16986:9;16972:24;;:::i;:::-;:28;:::i;:::-;17001:8;16972:38;;:::i;:::-;;18062:20;;17068:12;;:5;:12;;:::i;:::-;17112:15;17090:37;17112:15;17090:19;:5;:19;:37;:::i;:::-;17137:42;17161:18;17171:7;;17161:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17137:21;:5;:21;:42;:::i;:::-;17189:21;;17209:1;17189:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;17220:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;17310:20;;:::i;:::-;17344:10;;:15;;17358:1;17344:15;:::i;:::-;;;:::i;:::-;;17340:393;;;;17743:24;17387:18;17340:393;;17743:12;17758:9;17743:5;:12;:24;:::i;:::-;17811:9;:31;;17824:18;17811:31;:::i;:::-;;;:::i;:::-;;:66;;;17340:393;17807:196;;17340:393;18062:20;;:::i;:::-;:42;;;17340:393;18058:118;;17340:393;18209:9;;;18220:11;18233:8;18243:10;18255:15;;18191:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18286:9;:22;;18299:9;18286:22;:::i;:::-;;;:::i;:::-;;18282:114;;17340:393;18473:15;;;;;:::i;:::-;:29;;18492:10;18500:1;18492:10;:::i;:::-;18473:29;:::i;:::-;;;:::i;:::-;;18469:188;;17340:393;16445:2218;;:::o;18469:188::-;18522:49;:33;18539:15;;;:::i;:::-;18522:33;:::i;:::-;:49;:::i;:::-;;;18572:8;18582:9;18600:15;18593:23;18600:15;18593:23;:::i;:::-;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;18469:188;18518:129;;;;;;;;;;;18469:188;;;;18518:129;;;;;;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18282:114::-;18343:9;18354:8;18364:9;18375;18329:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18282:114;;;;18058:118;18157:7;18136:9;;18147:8;;18157:7;;;;:::i;:::-;18058:118;;;;18062:42;18086:7;:14;:7;;:14;;:::i;:::-;:18;;18103:1;18086:18;:::i;:::-;;;:::i;:::-;;18062:42;;17807:196;17893:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;17925:8;17893:41;;:::i;:::-;;17972:9;17983:8;17953:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;17807:196;;17811:66;17846:9;;:31;;17859:18;17846:31;:::i;:::-;;;:::i;:::-;;;17811:66;;17340:393;17426:10;:16;;17439:3;17426:16;:::i;:::-;;;:::i;:::-;;17422:311;;;;17743:24;17470:19;17422:311;;17340:393;;17422:311;17743:24;17611:19;17668:9;17714:7;17668:9;17679:11;;17692:8;17702:10;17714:7;;;;;;:::i;:::-;17422:311;;9090:115:46;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:38701:183:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:46:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:38701:183:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:30:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:38701:183:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;41446:705::-;;;;;41633:26;;:::i;:::-;41713:3;41699:27;41713:12;:3;41719:6;41713:12;;:::i;:::-;41699:27;:::i;:::-;41752:1;41736:17;41752:1;41736:17;:::i;:::-;41781:6;41798:3;41789:1;:7;;41793:3;41789:7;:::i;:::-;;;:::i;:::-;;;;;41830:30;:27;:24;:13;41844:9;41830:24;;:::i;:::-;:27;:::i;:::-;41858:1;41830:30;;:::i;:::-;41878:46;41899:9;41910:2;41914:9;41878:46;;:::i;:::-;41874:126;;41798:3;;;;;:::i;:::-;41769:18;;41874:126;41798:3;41958:2;;41944:16;41978:7;41958:2;41944:16;:4;41949:5;;41944:16;;;:::i;:::-;;:::i;:::-;41978:7;:::i;:::-;41874:126;;;;41789:7;;;;;;;42032:20;42046:5;42032:20;:::i;:::-;42079:1;42067:13;42079:1;42067:13;:::i;:::-;42093:3;42082:1;:9;;42086:5;42082:9;:::i;:::-;;;:::i;:::-;;;;;42093:3;42127:4;42112:22;42127:7;;:4;42132:1;42127:7;;:::i;:::-;;:::i;:::-;42112:22;:9;42122:1;;42112:22;;;:::i;:::-;;:::i;:::-;42093:3;:::i;:::-;42067:13;;42082:9;;;;;41446:705::o;8607:156:46:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:38701:183:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:46:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:38701:183:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:36:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:38701:183:-;;-1:-1:-1;6415:38701:183;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:36:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:183;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;23148:1016::-;;;;;;23584:17;;23598:3;23584:17;:::i;:::-;;;:::i;:::-;;;23580:513;;23148:1016;;;:::o;23580:513::-;23638:23;23645:15;23638:23;:::i;:::-;23694:39;;:29;:18;23713:9;23694:29;;:::i;:::-;23724:8;23694:39;;:::i;:::-;;:::i;:::-;23751:9;:14;;23764:1;23751:14;:::i;:::-;;;:::i;:::-;;:65;;;;;23580:513;23747:336;;;23580:513;;;;23747:336;23836:53;23878:11;23836:39;:29;:18;23855:9;23836:29;;:::i;:::-;23866:8;23836:39;;:::i;:::-;:53;:::i;:::-;23941:8;23912:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;23747:336;;;;;23751:65;23769:23;:11;;;:23;:::i;:::-;:47;;23796:20;;:::i;:::-;23769:47;:::i;:::-;;;:::i;:::-;;;23751:65;;;6415:38701;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;18801:46::-;18845:2;;;:::i;:::-;18801:46;:::o;18845:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;18854:1122::-;;18962:14;:7;;:14;;:::i;:::-;:19;;18980:1;18962:19;:::i;:::-;;;:::i;:::-;;18958:32;;19067:14;:7;;:14;;:::i;:::-;:23;;19084:6;19067:23;:::i;:::-;;;:::i;:::-;;19063:36;;19240:31;19109:25;;:::i;:::-;19240:4;:22;:4;:22;:::i;:::-;:31;:22;19263:7;;19240:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;18854:1122;19236:152;;;;;;;;;;;19472:12;:5;:12;:::i;:::-;:31;;19487:16;;:::i;:::-;19472:31;:::i;:::-;;;:::i;:::-;;:65;;;;19506:16;;:::i;:::-;19472:65;19709:28;:4;:28;:::i;:::-;;;19738:9;19749:8;19759:5;19766:8;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19472:65;19705:265;;;;;;;;;;;18854:1122::o;19705:265::-;;;;;;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19472:65::-;19525:12;:5;:12;:::i;:::-;19472:65;;19236:152;19371:7;;;:::o;19236:152::-;;;;;;;19240:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;19063:36;19092:7;;;;:::o;18958:32::-;18983:7;;;;:::o;4474:107:46:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:38701:183:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:46:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;42157:511:183:-;42265:4;;:::i;:::-;42364:20;42363:51;42364:50;:40;:31;:20;42385:9;42364:31;;:::i;:::-;:40;:::i;:::-;42405:8;42364:50;;:::i;:::-;42363:51;;:::i;:::-;42359:69;;42439:64;42468:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;42439:64;:::i;:::-;42517:19;;:5;:19;;:::i;:::-;:24;;42540:1;42517:24;:::i;:::-;;;:::i;:::-;;:62;;;;42157:511;42513:80;;42611:50;:37;:50;:15;42629:19;;42611:15;42629:5;:19;;:::i;:::-;42611:37;;:::i;:::-;42652:9;42611:50;:::i;:::-;;;:::i;:::-;;;42604:57;:::o;42513:80::-;42588:5;;;42581:12;:::o;42517:62::-;42545:5;:12;;:5;:12;;:::i;:::-;:34;;42561:18;42545:34;:::i;:::-;;;:::i;:::-;;42517:62;;42359:69;42423:5;;;;42416:12;:::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:46:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:38701:183:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:36:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"103240":[{"start":3807,"length":32},{"start":14646,"length":32}],"103388":[{"start":5216,"length":32},{"start":9933,"length":32},{"start":13367,"length":32},{"start":22350,"length":32},{"start":25355,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec\",\"dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319","urls":["bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec","dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x"],"license":"MIT"}},"version":1},"id":183} \ No newline at end of file diff --git a/fixtures/Cargo.toml b/fixtures/Cargo.toml index 980eefd3..e85f9975 100644 --- a/fixtures/Cargo.toml +++ b/fixtures/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tnt-core-fixtures" -version = "0.14.0" +version = "0.15.0" edition = "2021" rust-version = "1.81" description = "Local testnet fixture data for TNT Core" diff --git a/script/DeployL2Slashing.s.sol b/script/DeployL2Slashing.s.sol index 52eb1cfb..323a8d7f 100644 --- a/script/DeployL2Slashing.s.sol +++ b/script/DeployL2Slashing.s.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.26; import { Script, console2 } from "forge-std/Script.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { L2SlashingReceiver } from "../src/beacon/L2SlashingReceiver.sol"; import { TangleL2Slasher } from "../src/beacon/TangleL2Slasher.sol"; @@ -214,27 +215,39 @@ contract DeployL2Slashing is EnvUtils { slasher = address(slasherContract); console2.log("TangleL2Slasher:", slasher); - // Pass `address(0)` as the constructor's initial messenger so the + // Pass `address(0)` as the initializer's initial messenger so the // first `setMessenger` call below takes the bootstrap path (immediate // write). Subsequent swaps go through the 2-day timelock; without the // bootstrap exemption the deploy flow would deadlock for two days. address initialMessenger = address(0); // Deployer placeholder retained for None-bridge path below. address fallbackMessenger = messengerOverride != address(0) ? messengerOverride : deployer; - L2SlashingReceiver receiverContract = new L2SlashingReceiver(slasher, initialMessenger); + // C-3 (Round 4): deploy L2SlashingReceiver behind ERC1967 proxy. The + // deployer is wired in as the initial owner so post-deploy configuration + // (`setMessenger`, `setAuthorizedSender`) succeeds; ownership is then + // transferred to `admin` at the bottom of this function. + L2SlashingReceiver receiverImpl = new L2SlashingReceiver(); + ERC1967Proxy receiverProxy = new ERC1967Proxy( + address(receiverImpl), + abi.encodeCall(L2SlashingReceiver.initialize, (slasher, initialMessenger, deployer)) + ); + L2SlashingReceiver receiverContract = L2SlashingReceiver(address(receiverProxy)); receiver = address(receiverContract); - console2.log("L2SlashingReceiver:", receiver); + console2.log("L2SlashingReceiver impl:", address(receiverImpl)); + console2.log("L2SlashingReceiver proxy:", receiver); slasherContract.setAuthorizedCaller(receiver, true); console2.log("Authorized receiver as slasher caller"); if (bridge == BridgeProtocol.Hyperlane) { if (l1Messenger == address(0)) revert MissingEnv("L1_MESSENGER"); - bridgeReceiver = _deployAndConfigureHyperlaneReceiver(receiverContract, admin, sourceChainId, l1Messenger); + bridgeReceiver = + _deployAndConfigureHyperlaneReceiver(receiverContract, deployer, admin, sourceChainId, l1Messenger); receiverContract.setMessenger(bridgeReceiver); } else if (bridge == BridgeProtocol.LayerZero) { if (l1Messenger == address(0)) revert MissingEnv("L1_MESSENGER"); - bridgeReceiver = _deployAndConfigureLayerZeroReceiver(receiverContract, admin, sourceChainId, l1Messenger); + bridgeReceiver = + _deployAndConfigureLayerZeroReceiver(receiverContract, deployer, admin, sourceChainId, l1Messenger); receiverContract.setMessenger(bridgeReceiver); } else { bridgeReceiver = address(0); @@ -260,6 +273,7 @@ contract DeployL2Slashing is EnvUtils { function _deployAndConfigureHyperlaneReceiver( L2SlashingReceiver receiverContract, + address deployer, address admin, uint256 sourceChainId, address l1Messenger @@ -273,7 +287,16 @@ contract DeployL2Slashing is EnvUtils { // Verify bridge contract exists before deployment _verifyBridgeContract("Hyperlane Mailbox", mailbox); - HyperlaneReceiver hyperlaneReceiver = new HyperlaneReceiver(mailbox, address(receiverContract)); + // C-3 (Round 4): deploy HyperlaneReceiver behind ERC1967 proxy. + // `deployer` is the broadcaster (or the active pranker in dry-run); we + // wire it as the initial owner so the `setTrustedSender` call below + // succeeds, then transfer ownership to `admin`. + address hyperlaneImpl = address(new HyperlaneReceiver()); + ERC1967Proxy hyperlaneProxy = new ERC1967Proxy( + hyperlaneImpl, + abi.encodeCall(HyperlaneReceiver.initialize, (mailbox, address(receiverContract), deployer)) + ); + HyperlaneReceiver hyperlaneReceiver = HyperlaneReceiver(address(hyperlaneProxy)); // HyperlaneReceiver expects the "sender" to be the origin contract that dispatched the message (the messenger). hyperlaneReceiver.setTrustedSender(uint32(sourceChainId), l1Messenger, true); @@ -281,7 +304,8 @@ contract DeployL2Slashing is EnvUtils { hyperlaneReceiver.transferOwnership(admin); } - console2.log("HyperlaneReceiver:", address(hyperlaneReceiver)); + console2.log("HyperlaneReceiver impl:", hyperlaneImpl); + console2.log("HyperlaneReceiver proxy:", address(hyperlaneReceiver)); console2.log("Hyperlane mailbox:", mailbox); console2.log("Trusted L1 messenger:", l1Messenger); return address(hyperlaneReceiver); @@ -289,6 +313,7 @@ contract DeployL2Slashing is EnvUtils { function _deployAndConfigureLayerZeroReceiver( L2SlashingReceiver receiverContract, + address deployer, address admin, uint256 sourceChainId, address l1Messenger @@ -302,7 +327,12 @@ contract DeployL2Slashing is EnvUtils { // Verify bridge contract exists before deployment _verifyBridgeContract("LayerZero Endpoint", endpoint); - LayerZeroReceiver lzReceiver = new LayerZeroReceiver(endpoint, address(receiverContract)); + // C-3 (Round 4): deploy LayerZeroReceiver behind ERC1967 proxy. + address lzImpl = address(new LayerZeroReceiver()); + ERC1967Proxy lzProxy = new ERC1967Proxy( + lzImpl, abi.encodeCall(LayerZeroReceiver.initialize, (endpoint, address(receiverContract), deployer)) + ); + LayerZeroReceiver lzReceiver = LayerZeroReceiver(address(lzProxy)); uint32 sourceEid = uint32(vm.envOr("LAYERZERO_SOURCE_EID", uint256(_defaultLayerZeroEid(sourceChainId)))); if (sourceEid == 0) revert MissingEnv("LAYERZERO_SOURCE_EID"); @@ -313,7 +343,8 @@ contract DeployL2Slashing is EnvUtils { lzReceiver.transferOwnership(admin); } - console2.log("LayerZeroReceiver:", address(lzReceiver)); + console2.log("LayerZeroReceiver impl:", lzImpl); + console2.log("LayerZeroReceiver proxy:", address(lzReceiver)); console2.log("LayerZero endpoint:", endpoint); console2.log("Source EID:", sourceEid); console2.log("Trusted L1 messenger:", l1Messenger); diff --git a/src/beacon/L2SlashingReceiver.sol b/src/beacon/L2SlashingReceiver.sol index c1841a3e..a63c12df 100644 --- a/src/beacon/L2SlashingReceiver.sol +++ b/src/beacon/L2SlashingReceiver.sol @@ -1,6 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.26; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + import { ICrossChainReceiver } from "./interfaces/ICrossChainMessenger.sol"; /// @title IL2Slasher @@ -26,8 +30,12 @@ interface IL2Slasher { /// @title L2SlashingReceiver /// @notice Receives cross-chain slashing messages and executes them on L2 -/// @dev Deploy this on Tangle L2 (or any destination chain) -contract L2SlashingReceiver is ICrossChainReceiver { +/// @dev Deploy this on Tangle L2 (or any destination chain) behind an ERC1967 proxy. +/// C-3 (Round 4): converted to UUPS upgradeable so post-mainnet bug remediation +/// does not require re-deploying every bridge endpoint and re-authorising senders. +/// Storage is namespaced under the ERC-7201 slot +/// `tangle.beacon.L2SlashingReceiver` to keep upgrade-safe layout invariants. +contract L2SlashingReceiver is Initializable, UUPSUpgradeable, OwnableUpgradeable, ICrossChainReceiver { // ═══════════════════════════════════════════════════════════════════════════ // ERRORS // ═══════════════════════════════════════════════════════════════════════════ @@ -41,6 +49,7 @@ contract L2SlashingReceiver is ICrossChainReceiver { error SenderActivationTooEarly(uint256 activationTime); error NonceAlreadyProcessed(uint256 sourceChainId, address sender, uint256 nonce); error SlashingNotPossible(address operator); + error ZeroAddress(); // ═══════════════════════════════════════════════════════════════════════════ // EVENTS @@ -68,48 +77,117 @@ contract L2SlashingReceiver is ICrossChainReceiver { uint256 public constant SENDER_ACTIVATION_DELAY = 2 days; // ═══════════════════════════════════════════════════════════════════════════ - // STATE + // ERC-7201 NAMESPACED STORAGE // ═══════════════════════════════════════════════════════════════════════════ - /// @notice The L2 slasher contract - IL2Slasher public slasher; - - /// @notice The cross-chain messenger that can call receiveMessage - address public messenger; - - /// @notice Owner address - address public owner; + /// @custom:storage-location erc7201:tangle.beacon.L2SlashingReceiver + /// @dev All mutable state lives in this struct so the implementation contract + /// has zero state at fixed slots, and an upgrade simply re-points the + /// proxy at a new logic contract that reads from the same namespaced slot. + struct ReceiverStorage { + // Core wired contracts + IL2Slasher slasher; + address messenger; + // Authorized senders per source chain + mapping(uint256 => mapping(address => bool)) authorizedSenders; + // H-4 FIX: pending authorizations (chainId => sender => activation timestamp) + mapping(uint256 => mapping(address => uint256)) pendingAuthorizedSenders; + // C-2: timelocked admin swaps for messenger / slasher + address pendingMessenger; + uint256 pendingMessengerAt; + address pendingSlasher; + uint256 pendingSlasherAt; + // Replay protection (sourceChain => sender => nonce => processed) + mapping(uint256 => mapping(address => mapping(uint256 => bool))) processedNonces; + // Cumulative slash bps per operator from beacon chain + mapping(address => uint256) beaconSlashTotal; + // Reserved storage for future upgrades. Keep this LAST. + uint256[50] __gap; + } - /// @notice Authorized senders per source chain (chainId => sender => authorized) - mapping(uint256 => mapping(address => bool)) public authorizedSenders; + /// @notice ERC-7201 slot: + /// keccak256(abi.encode(uint256(keccak256("tangle.beacon.L2SlashingReceiver")) - 1)) + /// & ~bytes32(uint256(0xff)) + bytes32 private constant RECEIVER_STORAGE_SLOT = + 0x82055dbb59125fee25966888e9f62ec781a4d1c7ca467f7e3e2e55d698dfc400; - /// @notice H-4 FIX: Pending authorized senders with activation timestamp - /// @dev chainId => sender => activation timestamp (0 means not pending) - mapping(uint256 => mapping(address => uint256)) public pendingAuthorizedSenders; + function _getStorage() private pure returns (ReceiverStorage storage $) { + bytes32 slot = RECEIVER_STORAGE_SLOT; + assembly { + $.slot := slot + } + } - /// @notice Cross-chain auditor C-2: a compromised owner could otherwise hot-swap - /// the messenger / slasher and impersonate any authorised sender, - /// undercutting the H-4 timelock entirely. Both swaps now require the - /// same SENDER_ACTIVATION_DELAY queue. - address public pendingMessenger; - uint256 public pendingMessengerAt; - address public pendingSlasher; - uint256 public pendingSlasherAt; + // ═══════════════════════════════════════════════════════════════════════════ + // CONSTRUCTOR / INITIALIZER + // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Nonce for deduplication (sourceChain => sender => nonce => processed) - mapping(uint256 => mapping(address => mapping(uint256 => bool))) public processedNonces; + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } - /// @notice Cumulative slash bps per operator from beacon chain - mapping(address => uint256) public beaconSlashTotal; + /// @notice Initialize the receiver behind a proxy. + /// @param _slasher The L2 slasher contract that applies stake reductions. + /// @param _messenger Trusted bridge adapter that may invoke `receiveMessage`. + /// Pass `address(0)` so the deploy script can wire the + /// bridge adapter via `setMessenger` (bootstrap path). + /// @param _owner Initial admin/owner. Should be a multisig or timelock. + /// @dev Init order matters: ownership must be granted before any sender is + /// authorised, since `setAuthorizedSender` is `onlyOwner`. + function initialize(address _slasher, address _messenger, address _owner) external initializer { + if (_owner == address(0)) revert ZeroAddress(); + + __UUPSUpgradeable_init(); + __Ownable_init(_owner); + + ReceiverStorage storage $ = _getStorage(); + $.slasher = IL2Slasher(_slasher); + $.messenger = _messenger; + } // ═══════════════════════════════════════════════════════════════════════════ - // CONSTRUCTOR + // VIEW HELPERS (preserve original public-state surface for off-chain readers) // ═══════════════════════════════════════════════════════════════════════════ - constructor(address _slasher, address _messenger) { - slasher = IL2Slasher(_slasher); - messenger = _messenger; - owner = msg.sender; + function slasher() external view returns (IL2Slasher) { + return _getStorage().slasher; + } + + function messenger() external view returns (address) { + return _getStorage().messenger; + } + + function authorizedSenders(uint256 chainId, address sender) external view returns (bool) { + return _getStorage().authorizedSenders[chainId][sender]; + } + + function pendingAuthorizedSenders(uint256 chainId, address sender) external view returns (uint256) { + return _getStorage().pendingAuthorizedSenders[chainId][sender]; + } + + function pendingMessenger() external view returns (address) { + return _getStorage().pendingMessenger; + } + + function pendingMessengerAt() external view returns (uint256) { + return _getStorage().pendingMessengerAt; + } + + function pendingSlasher() external view returns (address) { + return _getStorage().pendingSlasher; + } + + function pendingSlasherAt() external view returns (uint256) { + return _getStorage().pendingSlasherAt; + } + + function processedNonces(uint256 sourceChainId, address sender, uint256 nonce) external view returns (bool) { + return _getStorage().processedNonces[sourceChainId][sender][nonce]; + } + + function beaconSlashTotal(address operator) external view returns (uint256) { + return _getStorage().beaconSlashTotal[operator]; } // ═══════════════════════════════════════════════════════════════════════════ @@ -122,16 +200,7 @@ contract L2SlashingReceiver is ICrossChainReceiver { } function _onlyMessenger() internal view { - if (msg.sender != messenger) revert UnauthorizedMessenger(); - } - - modifier onlyOwner() { - _onlyOwner(); - _; - } - - function _onlyOwner() internal view { - require(msg.sender == owner, "Only owner"); + if (msg.sender != _getStorage().messenger) revert UnauthorizedMessenger(); } // ═══════════════════════════════════════════════════════════════════════════ @@ -140,8 +209,10 @@ contract L2SlashingReceiver is ICrossChainReceiver { /// @inheritdoc ICrossChainReceiver function receiveMessage(uint256 sourceChainId, address sender, bytes calldata payload) external onlyMessenger { + ReceiverStorage storage $ = _getStorage(); + // Verify sender is authorized for this source chain - if (!authorizedSenders[sourceChainId][sender]) { + if (!$.authorizedSenders[sourceChainId][sender]) { revert UnauthorizedSender(); } @@ -151,7 +222,7 @@ contract L2SlashingReceiver is ICrossChainReceiver { bytes4 messageType = bytes4(payload[:4]); if (messageType == SLASH_MESSAGE_TYPE) { - _handleSlashMessage(sourceChainId, sender, payload[4:]); + _handleSlashMessage($, sourceChainId, sender, payload[4:]); } else { revert InvalidPayload(); } @@ -169,14 +240,19 @@ contract L2SlashingReceiver is ICrossChainReceiver { /// retry path — the bridge cannot redeliver an already-consumed nonce. The /// legitimate "applied with zero bps" case (`slashBps == 0`) is also a hard /// revert here so the L1 connector never wastes a bridge fee on a no-op. - function _handleSlashMessage(uint256 sourceChainId, address sender, bytes calldata data) internal { + function _handleSlashMessage( + ReceiverStorage storage $, + uint256 sourceChainId, + address sender, + bytes calldata data + ) internal { // Decode: operator, slashBps, slashingFactor, nonce, podAddress (address operator, uint16 slashBps, uint64 slashingFactor, uint256 nonce, address pod) = abi.decode(data, (address, uint16, uint64, uint256, address)); // Revert (not silent return) so the relayer can distinguish "already processed" // from "still pending" during retry / partition recovery. - if (processedNonces[sourceChainId][sender][nonce]) { + if ($.processedNonces[sourceChainId][sender][nonce]) { revert NonceAlreadyProcessed(sourceChainId, sender, nonce); } @@ -186,17 +262,17 @@ contract L2SlashingReceiver is ICrossChainReceiver { if (slashBps == 0) { revert InvalidPayload(); } - if (!slasher.canSlash(operator)) { + if (!$.slasher.canSlash(operator)) { revert SlashingNotPossible(operator); } // Apply the slash FIRST (state-changing), then mark the nonce processed. // If `slashOperator` reverts, the whole tx reverts and the nonce stays open. bytes memory reason = abi.encode("BEACON_CHAIN_SLASH", sourceChainId, pod, slashingFactor, block.timestamp); - slasher.slashOperator(operator, slashBps, reason); - beaconSlashTotal[operator] += slashBps; + $.slasher.slashOperator(operator, slashBps, reason); + $.beaconSlashTotal[operator] += slashBps; - processedNonces[sourceChainId][sender][nonce] = true; + $.processedNonces[sourceChainId][sender][nonce] = true; emit SlashingExecuted(operator, slashBps, slashingFactor); emit SlashingReceived(sourceChainId, operator, slashBps, keccak256(abi.encode(sourceChainId, sender, nonce))); @@ -209,27 +285,29 @@ contract L2SlashingReceiver is ICrossChainReceiver { /// @notice H-4 FIX: Schedule authorization of a sender (subject to timelock) /// @dev For revoking authorization, takes effect immediately function setAuthorizedSender(uint256 chainId, address sender, bool authorized) external onlyOwner { + ReceiverStorage storage $ = _getStorage(); if (!authorized) { // Revocation is immediate - authorizedSenders[chainId][sender] = false; - pendingAuthorizedSenders[chainId][sender] = 0; + $.authorizedSenders[chainId][sender] = false; + $.pendingAuthorizedSenders[chainId][sender] = 0; emit AuthorizedSenderUpdated(chainId, sender, false); } else { // Authorization is timelocked uint256 activationTime = block.timestamp + SENDER_ACTIVATION_DELAY; - pendingAuthorizedSenders[chainId][sender] = activationTime; + $.pendingAuthorizedSenders[chainId][sender] = activationTime; emit AuthorizedSenderScheduled(chainId, sender, activationTime); } } /// @notice H-4 FIX: Activate a pending authorized sender after delay function activateAuthorizedSender(uint256 chainId, address sender) external onlyOwner { - uint256 activationTime = pendingAuthorizedSenders[chainId][sender]; + ReceiverStorage storage $ = _getStorage(); + uint256 activationTime = $.pendingAuthorizedSenders[chainId][sender]; if (activationTime == 0) revert SenderNotPending(); if (block.timestamp < activationTime) revert SenderActivationTooEarly(activationTime); - authorizedSenders[chainId][sender] = true; - pendingAuthorizedSenders[chainId][sender] = 0; + $.authorizedSenders[chainId][sender] = true; + $.pendingAuthorizedSenders[chainId][sender] = 0; emit AuthorizedSenderUpdated(chainId, sender, true); } @@ -242,25 +320,27 @@ contract L2SlashingReceiver is ICrossChainReceiver { /// been processed; subsequent swaps go through the timelock. function setMessenger(address _messenger) external onlyOwner { if (_messenger == address(0)) revert UnauthorizedMessenger(); - if (messenger == address(0)) { - messenger = _messenger; + ReceiverStorage storage $ = _getStorage(); + if ($.messenger == address(0)) { + $.messenger = _messenger; emit MessengerUpdated(address(0), _messenger); return; } - pendingMessenger = _messenger; - pendingMessengerAt = block.timestamp + SENDER_ACTIVATION_DELAY; - emit MessengerScheduled(_messenger, pendingMessengerAt); + $.pendingMessenger = _messenger; + $.pendingMessengerAt = block.timestamp + SENDER_ACTIVATION_DELAY; + emit MessengerScheduled(_messenger, $.pendingMessengerAt); } /// @notice Activate a previously-scheduled messenger swap. function activateMessenger() external onlyOwner { - address next = pendingMessenger; + ReceiverStorage storage $ = _getStorage(); + address next = $.pendingMessenger; if (next == address(0)) revert SenderNotPending(); - if (block.timestamp < pendingMessengerAt) revert SenderActivationTooEarly(pendingMessengerAt); - address old = messenger; - messenger = next; - pendingMessenger = address(0); - pendingMessengerAt = 0; + if (block.timestamp < $.pendingMessengerAt) revert SenderActivationTooEarly($.pendingMessengerAt); + address old = $.messenger; + $.messenger = next; + $.pendingMessenger = address(0); + $.pendingMessengerAt = 0; emit MessengerUpdated(old, next); } @@ -269,39 +349,46 @@ contract L2SlashingReceiver is ICrossChainReceiver { /// slasher is unset, allow immediate write so deploy scripts work. function setSlasher(address _slasher) external onlyOwner { if (_slasher == address(0)) revert UnauthorizedSender(); - if (address(slasher) == address(0)) { - slasher = IL2Slasher(_slasher); + ReceiverStorage storage $ = _getStorage(); + if (address($.slasher) == address(0)) { + $.slasher = IL2Slasher(_slasher); emit SlasherUpdated(_slasher); return; } - pendingSlasher = _slasher; - pendingSlasherAt = block.timestamp + SENDER_ACTIVATION_DELAY; - emit SlasherScheduled(_slasher, pendingSlasherAt); + $.pendingSlasher = _slasher; + $.pendingSlasherAt = block.timestamp + SENDER_ACTIVATION_DELAY; + emit SlasherScheduled(_slasher, $.pendingSlasherAt); } /// @notice Activate a previously-scheduled slasher swap. function activateSlasher() external onlyOwner { - address next = pendingSlasher; + ReceiverStorage storage $ = _getStorage(); + address next = $.pendingSlasher; if (next == address(0)) revert SenderNotPending(); - if (block.timestamp < pendingSlasherAt) revert SenderActivationTooEarly(pendingSlasherAt); - slasher = IL2Slasher(next); - pendingSlasher = address(0); - pendingSlasherAt = 0; + if (block.timestamp < $.pendingSlasherAt) revert SenderActivationTooEarly($.pendingSlasherAt); + $.slasher = IL2Slasher(next); + $.pendingSlasher = address(0); + $.pendingSlasherAt = 0; emit SlasherUpdated(next); } - /// @notice Transfer ownership - function transferOwnership(address newOwner) external onlyOwner { - require(newOwner != address(0), "Zero address"); - owner = newOwner; - } - // ═══════════════════════════════════════════════════════════════════════════ // VIEW // ═══════════════════════════════════════════════════════════════════════════ /// @notice Check if a nonce has been processed function isNonceProcessed(uint256 sourceChainId, address sender, uint256 nonce) external view returns (bool) { - return processedNonces[sourceChainId][sender][nonce]; + return _getStorage().processedNonces[sourceChainId][sender][nonce]; } + + // ═══════════════════════════════════════════════════════════════════════════ + // UPGRADE AUTHORIZATION (UUPS / C-3) + // ═══════════════════════════════════════════════════════════════════════════ + + /// @inheritdoc UUPSUpgradeable + /// @dev Only the owner (a multisig or timelock in production) may upgrade the + /// implementation. The owner is the same role gating sender / messenger / + /// slasher mutations, so upgrade authority is no broader than existing + /// admin authority — but concentrated logic still warrants a timelock owner. + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } } diff --git a/src/beacon/bridges/ArbitrumCrossChainMessenger.sol b/src/beacon/bridges/ArbitrumCrossChainMessenger.sol index 31402c3b..0e9d2f53 100644 --- a/src/beacon/bridges/ArbitrumCrossChainMessenger.sol +++ b/src/beacon/bridges/ArbitrumCrossChainMessenger.sol @@ -1,6 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.26; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + import { ICrossChainMessenger, ICrossChainReceiver } from "../interfaces/ICrossChainMessenger.sol"; /// @title ArbitrumCrossChainMessenger @@ -235,35 +239,84 @@ contract ArbitrumCrossChainMessenger is ICrossChainMessenger { /// @notice Adapter for receiving messages on Arbitrum L2 from L1 /// @dev Validates sender is the aliased L1 contract /// M-12 FIX: Added message replay protection -contract ArbitrumL2Receiver { +/// C-3 (Round 4): Converted to UUPS upgradeable. Deploy behind ERC1967Proxy +/// and call `initialize(...)`. +contract ArbitrumL2Receiver is Initializable, UUPSUpgradeable, OwnableUpgradeable { /// @notice Address offset for L1→L2 aliasing uint160 internal constant OFFSET = uint160(0x1111000000000000000000000000000000001111); - /// @notice Expected L1 sender (before aliasing) - // forge-lint: disable-next-line(screaming-snake-case-immutable) - address public immutable l1Sender; - - /// @notice The actual receiver contract - // forge-lint: disable-next-line(screaming-snake-case-immutable) - ICrossChainReceiver public immutable receiver; - uint256 public immutable sourceChainId; + /// @custom:storage-location erc7201:tangle.beacon.bridges.ArbitrumL2Receiver + struct ArbitrumL2ReceiverStorage { + address l1Sender; + ICrossChainReceiver receiver; + uint256 sourceChainId; + mapping(bytes32 => bool) processedMessages; + uint256 messageNonce; + uint256[50] __gap; + } - /// @notice M-12 FIX: Track processed message IDs to prevent replay attacks - mapping(bytes32 => bool) public processedMessages; + /// @notice ERC-7201 slot: + /// keccak256(abi.encode(uint256(keccak256("tangle.beacon.bridges.ArbitrumL2Receiver")) - 1)) + /// & ~bytes32(uint256(0xff)) + bytes32 private constant ARBITRUM_L2_RECEIVER_SLOT = + 0x64131b06865fa0d4879dd69e294c6861ab67818eafcdf6223a3d88a0ee88d500; - /// @notice M-12 FIX: Nonce for generating unique message IDs - uint256 public messageNonce; + function _getStorage() private pure returns (ArbitrumL2ReceiverStorage storage $) { + bytes32 s = ARBITRUM_L2_RECEIVER_SLOT; + assembly { + $.slot := s + } + } /// @notice M-12 FIX: Event emitted when a message is processed event MessageProcessed(bytes32 indexed messageId, address indexed sender, uint256 nonce); /// @notice M-12 FIX: Error for replayed messages error MessageAlreadyProcessed(bytes32 messageId); + error ZeroAddress(); + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// @notice Initialize the receiver behind a proxy. + /// @dev Init order matters: ownership must be set before any state changes + /// so that `_authorizeUpgrade` is enforceable from block one. + function initialize( + address _l1Sender, + address _receiver, + uint256 _sourceChainId, + address _owner + ) external initializer { + if (_owner == address(0)) revert ZeroAddress(); + __UUPSUpgradeable_init(); + __Ownable_init(_owner); + + ArbitrumL2ReceiverStorage storage $ = _getStorage(); + $.l1Sender = _l1Sender; + $.receiver = ICrossChainReceiver(_receiver); + $.sourceChainId = _sourceChainId; + } - constructor(address _l1Sender, address _receiver, uint256 _sourceChainId) { - l1Sender = _l1Sender; - receiver = ICrossChainReceiver(_receiver); - sourceChainId = _sourceChainId; + function l1Sender() external view returns (address) { + return _getStorage().l1Sender; + } + + function receiver() external view returns (ICrossChainReceiver) { + return _getStorage().receiver; + } + + function sourceChainId() external view returns (uint256) { + return _getStorage().sourceChainId; + } + + function processedMessages(bytes32 messageId) external view returns (bool) { + return _getStorage().processedMessages[messageId]; + } + + function messageNonce() external view returns (uint256) { + return _getStorage().messageNonce; } /// @notice Compute L1 aliased address @@ -276,30 +329,37 @@ contract ArbitrumL2Receiver { /// @notice Relay message from L1 (called via retryable ticket) /// @dev M-12 FIX: Added message ID validation to prevent replay attacks function relayMessage(bytes calldata payload) external { + ArbitrumL2ReceiverStorage storage $ = _getStorage(); + address sender_ = $.l1Sender; + // Verify msg.sender is the aliased L1 sender - require(msg.sender == applyL1ToL2Alias(l1Sender), "Invalid sender"); + require(msg.sender == applyL1ToL2Alias(sender_), "Invalid sender"); // Deduplicate identical bridged payload deliveries from the same L1 sender. - bytes32 messageId = keccak256(abi.encode(block.chainid, l1Sender, payload)); + bytes32 messageId = keccak256(abi.encode(block.chainid, sender_, payload)); // M-12 FIX: Check for replay attack - if (processedMessages[messageId]) { + if ($.processedMessages[messageId]) { revert MessageAlreadyProcessed(messageId); } // M-12 FIX: Mark message as processed before external call (CEI pattern) - processedMessages[messageId] = true; - uint256 currentNonce = messageNonce++; + $.processedMessages[messageId] = true; + uint256 currentNonce = $.messageNonce++; - emit MessageProcessed(messageId, l1Sender, currentNonce); + emit MessageProcessed(messageId, sender_, currentNonce); - receiver.receiveMessage(sourceChainId, l1Sender, payload); + $.receiver.receiveMessage($.sourceChainId, sender_, payload); } /// @notice M-12 FIX: Check if a message ID has been processed /// @param messageId The message ID to check /// @return True if the message has been processed function isMessageProcessed(bytes32 messageId) external view returns (bool) { - return processedMessages[messageId]; + return _getStorage().processedMessages[messageId]; } + + /// @inheritdoc UUPSUpgradeable + /// @dev Owner-gated. Production owner should be a multisig / timelock. + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } } diff --git a/src/beacon/bridges/BaseCrossChainMessenger.sol b/src/beacon/bridges/BaseCrossChainMessenger.sol index a9027277..8db67871 100644 --- a/src/beacon/bridges/BaseCrossChainMessenger.sol +++ b/src/beacon/bridges/BaseCrossChainMessenger.sol @@ -1,6 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.26; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + import { ICrossChainMessenger, ICrossChainReceiver } from "../interfaces/ICrossChainMessenger.sol"; /// @title BaseCrossChainMessenger @@ -133,61 +137,120 @@ contract BaseCrossChainMessenger is ICrossChainMessenger { /// @title BaseL2Receiver /// @notice Adapter for receiving messages on Base L2 /// @dev M-12 FIX: Added message replay protection -contract BaseL2Receiver { - // forge-lint: disable-next-line(screaming-snake-case-immutable) - IBaseCrossDomainMessenger public immutable l2Messenger; - // forge-lint: disable-next-line(screaming-snake-case-immutable) - address public immutable l1Sender; - // forge-lint: disable-next-line(screaming-snake-case-immutable) - ICrossChainReceiver public immutable receiver; - uint256 public immutable sourceChainId; +/// C-3 (Round 4): Converted to UUPS upgradeable. Deploy behind ERC1967Proxy +/// and call `initialize(...)`. +contract BaseL2Receiver is Initializable, UUPSUpgradeable, OwnableUpgradeable { + /// @custom:storage-location erc7201:tangle.beacon.bridges.BaseL2Receiver + struct BaseL2ReceiverStorage { + IBaseCrossDomainMessenger l2Messenger; + address l1Sender; + ICrossChainReceiver receiver; + uint256 sourceChainId; + mapping(bytes32 => bool) processedMessages; + uint256 messageNonce; + uint256[50] __gap; + } - /// @notice M-12 FIX: Track processed message IDs to prevent replay attacks - mapping(bytes32 => bool) public processedMessages; + /// @notice ERC-7201 slot: + /// keccak256(abi.encode(uint256(keccak256("tangle.beacon.bridges.BaseL2Receiver")) - 1)) + /// & ~bytes32(uint256(0xff)) + bytes32 private constant BASE_L2_RECEIVER_SLOT = + 0x697acf8f37fcf1e990825dbccd8642ff6efc86e337b0fa3a87405b6fe90aa500; - /// @notice M-12 FIX: Nonce for generating unique message IDs - uint256 public messageNonce; + function _getStorage() private pure returns (BaseL2ReceiverStorage storage $) { + bytes32 s = BASE_L2_RECEIVER_SLOT; + assembly { + $.slot := s + } + } /// @notice M-12 FIX: Event emitted when a message is processed event MessageProcessed(bytes32 indexed messageId, address indexed sender, uint256 nonce); /// @notice M-12 FIX: Error for replayed messages error MessageAlreadyProcessed(bytes32 messageId); + error ZeroAddress(); + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } - constructor(address _l2Messenger, address _l1Sender, address _receiver, uint256 _sourceChainId) { - l2Messenger = IBaseCrossDomainMessenger(_l2Messenger); - l1Sender = _l1Sender; - receiver = ICrossChainReceiver(_receiver); - sourceChainId = _sourceChainId; + function initialize( + address _l2Messenger, + address _l1Sender, + address _receiver, + uint256 _sourceChainId, + address _owner + ) external initializer { + if (_owner == address(0)) revert ZeroAddress(); + __UUPSUpgradeable_init(); + __Ownable_init(_owner); + + BaseL2ReceiverStorage storage $ = _getStorage(); + $.l2Messenger = IBaseCrossDomainMessenger(_l2Messenger); + $.l1Sender = _l1Sender; + $.receiver = ICrossChainReceiver(_receiver); + $.sourceChainId = _sourceChainId; + } + + function l2Messenger() external view returns (IBaseCrossDomainMessenger) { + return _getStorage().l2Messenger; + } + + function l1Sender() external view returns (address) { + return _getStorage().l1Sender; + } + + function receiver() external view returns (ICrossChainReceiver) { + return _getStorage().receiver; + } + + function sourceChainId() external view returns (uint256) { + return _getStorage().sourceChainId; + } + + function processedMessages(bytes32 messageId) external view returns (bool) { + return _getStorage().processedMessages[messageId]; + } + + function messageNonce() external view returns (uint256) { + return _getStorage().messageNonce; } /// @notice Relay message from L1 /// @dev M-12 FIX: Added message ID validation to prevent replay attacks function relayMessage(bytes calldata payload) external { - require(msg.sender == address(l2Messenger), "Only messenger"); - require(l2Messenger.xDomainMessageSender() == l1Sender, "Invalid sender"); + BaseL2ReceiverStorage storage $ = _getStorage(); + IBaseCrossDomainMessenger msgr = $.l2Messenger; + address sender_ = $.l1Sender; + + require(msg.sender == address(msgr), "Only messenger"); + require(msgr.xDomainMessageSender() == sender_, "Invalid sender"); // Deduplicate identical bridged payload deliveries from the same L1 sender. - bytes32 messageId = keccak256(abi.encode(block.chainid, l1Sender, payload)); + bytes32 messageId = keccak256(abi.encode(block.chainid, sender_, payload)); // M-12 FIX: Check for replay attack - if (processedMessages[messageId]) { + if ($.processedMessages[messageId]) { revert MessageAlreadyProcessed(messageId); } // M-12 FIX: Mark message as processed before external call (CEI pattern) - processedMessages[messageId] = true; - uint256 currentNonce = messageNonce++; + $.processedMessages[messageId] = true; + uint256 currentNonce = $.messageNonce++; - emit MessageProcessed(messageId, l1Sender, currentNonce); + emit MessageProcessed(messageId, sender_, currentNonce); - receiver.receiveMessage(sourceChainId, l1Sender, payload); + $.receiver.receiveMessage($.sourceChainId, sender_, payload); } /// @notice M-12 FIX: Check if a message ID has been processed - /// @param messageId The message ID to check - /// @return True if the message has been processed function isMessageProcessed(bytes32 messageId) external view returns (bool) { - return processedMessages[messageId]; + return _getStorage().processedMessages[messageId]; } + + /// @inheritdoc UUPSUpgradeable + /// @dev Owner-gated. Production owner should be a multisig / timelock. + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } } diff --git a/src/beacon/bridges/HyperlaneCrossChainMessenger.sol b/src/beacon/bridges/HyperlaneCrossChainMessenger.sol index 7d2702db..ab3e75fc 100644 --- a/src/beacon/bridges/HyperlaneCrossChainMessenger.sol +++ b/src/beacon/bridges/HyperlaneCrossChainMessenger.sol @@ -1,6 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.26; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + import { ICrossChainMessenger, ICrossChainReceiver } from "../interfaces/ICrossChainMessenger.sol"; /// @title HyperlaneCrossChainMessenger @@ -261,26 +265,34 @@ contract HyperlaneCrossChainMessenger is ICrossChainMessenger { /// @notice Hyperlane MessageRecipient for receiving cross-chain messages /// @dev Implements handle() to process incoming messages /// M-12 FIX: Added message replay protection -contract HyperlaneReceiver { - /// @notice Hyperlane Mailbox - // forge-lint: disable-next-line(screaming-snake-case-immutable) - address public immutable mailbox; - - /// @notice The actual message receiver - // forge-lint: disable-next-line(screaming-snake-case-immutable) - ICrossChainReceiver public immutable receiver; - - /// @notice Owner - address public owner; +/// C-3 (Round 4): Converted to UUPS upgradeable. Deploy behind ERC1967Proxy +/// and call `initialize(...)`. +contract HyperlaneReceiver is Initializable, UUPSUpgradeable, OwnableUpgradeable { + /// @custom:storage-location erc7201:tangle.beacon.bridges.HyperlaneReceiver + struct HyperlaneReceiverStorage { + address mailbox; + ICrossChainReceiver receiver; + // domain => sender => trusted + mapping(uint32 => mapping(bytes32 => bool)) trustedSenders; + // domain => evm chain id + mapping(uint32 => uint256) domainToChainId; + // replay protection + mapping(bytes32 => bool) processedMessages; + uint256[50] __gap; + } - /// @notice Trusted senders per origin domain (domain => sender => trusted) - mapping(uint32 => mapping(bytes32 => bool)) public trustedSenders; + /// @notice ERC-7201 slot: + /// keccak256(abi.encode(uint256(keccak256("tangle.beacon.bridges.HyperlaneReceiver")) - 1)) + /// & ~bytes32(uint256(0xff)) + bytes32 private constant HYPERLANE_RECEIVER_SLOT = + 0x705d2cb8451e2eb6cc90102bf0b37cc1990532a8de11ebfaa53c217022f33f00; - /// @notice Mapping from Hyperlane domain to EVM chain ID - mapping(uint32 => uint256) public domainToChainId; - - /// @notice M-12 FIX: Track processed message IDs to prevent replay attacks - mapping(bytes32 => bool) public processedMessages; + function _getStorage() private pure returns (HyperlaneReceiverStorage storage $) { + bytes32 s = HYPERLANE_RECEIVER_SLOT; + assembly { + $.slot := s + } + } /// @notice Events event MessageHandled(uint32 indexed origin, bytes32 sender, uint256 sourceChainId); @@ -290,29 +302,54 @@ contract HyperlaneReceiver { /// @notice M-12 FIX: Error for replayed messages error MessageAlreadyProcessed(bytes32 messageId); + error ZeroAddress(); - constructor(address _mailbox, address _receiver) { - mailbox = _mailbox; - receiver = ICrossChainReceiver(_receiver); - owner = msg.sender; + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// @notice Initialize the receiver behind a proxy. + /// @dev Init order: ownership granted before any trusted-sender configuration so + /// `setTrustedSender`/`setDomainMapping` cannot be front-run by a stale + /// caller. + function initialize(address _mailbox, address _receiver, address _owner) external initializer { + if (_owner == address(0)) revert ZeroAddress(); + __UUPSUpgradeable_init(); + __Ownable_init(_owner); + + HyperlaneReceiverStorage storage $ = _getStorage(); + $.mailbox = _mailbox; + $.receiver = ICrossChainReceiver(_receiver); // Initialize domain mappings - domainToChainId[1] = 1; // Ethereum - domainToChainId[42_161] = 42_161; // Arbitrum - domainToChainId[8453] = 8453; // Base - domainToChainId[11_155_111] = 11_155_111; // Sepolia - domainToChainId[17_000] = 17_000; // Holesky - domainToChainId[421_614] = 421_614; // Arbitrum Sepolia - domainToChainId[84_532] = 84_532; // Base Sepolia + $.domainToChainId[1] = 1; // Ethereum + $.domainToChainId[42_161] = 42_161; // Arbitrum + $.domainToChainId[8453] = 8453; // Base + $.domainToChainId[11_155_111] = 11_155_111; // Sepolia + $.domainToChainId[17_000] = 17_000; // Holesky + $.domainToChainId[421_614] = 421_614; // Arbitrum Sepolia + $.domainToChainId[84_532] = 84_532; // Base Sepolia } - modifier onlyOwner() { - _receiverOnlyOwner(); - _; + function mailbox() external view returns (address) { + return _getStorage().mailbox; } - function _receiverOnlyOwner() internal view { - require(msg.sender == owner, "Only owner"); + function receiver() external view returns (ICrossChainReceiver) { + return _getStorage().receiver; + } + + function trustedSenders(uint32 domain, bytes32 sender) external view returns (bool) { + return _getStorage().trustedSenders[domain][sender]; + } + + function domainToChainId(uint32 domain) external view returns (uint256) { + return _getStorage().domainToChainId[domain]; + } + + function processedMessages(bytes32 messageId) external view returns (bool) { + return _getStorage().processedMessages[messageId]; } modifier onlyMailbox() { @@ -321,7 +358,7 @@ contract HyperlaneReceiver { } function _onlyMailbox() internal view { - require(msg.sender == mailbox, "Only mailbox"); + require(msg.sender == _getStorage().mailbox, "Only mailbox"); } /// @notice Handle incoming Hyperlane message @@ -330,56 +367,54 @@ contract HyperlaneReceiver { /// @param _message Message body /// @dev M-12 FIX: Added message ID validation to prevent replay attacks function handle(uint32 _origin, bytes32 _sender, bytes calldata _message) external payable onlyMailbox { + HyperlaneReceiverStorage storage $ = _getStorage(); + // Verify trusted sender - require(trustedSenders[_origin][_sender], "Untrusted sender"); + require($.trustedSenders[_origin][_sender], "Untrusted sender"); // M-12 FIX: Generate unique message ID from origin, sender, and message content bytes32 messageId = keccak256(abi.encode(_origin, _sender, keccak256(_message))); // M-12 FIX: Check for replay attack - if (processedMessages[messageId]) { + if ($.processedMessages[messageId]) { revert MessageAlreadyProcessed(messageId); } // M-12 FIX: Mark message as processed before external call (CEI pattern) - processedMessages[messageId] = true; + $.processedMessages[messageId] = true; // Decode message (uint256 sourceChainId, address originalSender, bytes memory payload) = abi.decode(_message, (uint256, address, bytes)); // Verify chain ID matches domain - require(domainToChainId[_origin] == sourceChainId, "Chain mismatch"); + require($.domainToChainId[_origin] == sourceChainId, "Chain mismatch"); emit MessageHandled(_origin, _sender, sourceChainId); emit MessageProcessed(messageId, _origin, _sender); // Forward to receiver - receiver.receiveMessage(sourceChainId, originalSender, payload); + $.receiver.receiveMessage(sourceChainId, originalSender, payload); } /// @notice Set trusted sender function setTrustedSender(uint32 domain, address sender, bool trusted) external onlyOwner { bytes32 senderBytes = bytes32(uint256(uint160(sender))); - trustedSenders[domain][senderBytes] = trusted; + _getStorage().trustedSenders[domain][senderBytes] = trusted; emit TrustedSenderSet(domain, senderBytes, trusted); } /// @notice Set domain to chain ID mapping function setDomainMapping(uint32 domain, uint256 chainId) external onlyOwner { - domainToChainId[domain] = chainId; - } - - /// @notice Transfer ownership - function transferOwnership(address newOwner) external onlyOwner { - require(newOwner != address(0), "Zero address"); - owner = newOwner; + _getStorage().domainToChainId[domain] = chainId; } /// @notice M-12 FIX: Check if a message ID has been processed - /// @param messageId The message ID to check - /// @return True if the message has been processed function isMessageProcessed(bytes32 messageId) external view returns (bool) { - return processedMessages[messageId]; + return _getStorage().processedMessages[messageId]; } + + /// @inheritdoc UUPSUpgradeable + /// @dev Owner-gated. Production owner should be a multisig / timelock. + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } } diff --git a/src/beacon/bridges/LayerZeroCrossChainMessenger.sol b/src/beacon/bridges/LayerZeroCrossChainMessenger.sol index 3e5876d3..910cd8e4 100644 --- a/src/beacon/bridges/LayerZeroCrossChainMessenger.sol +++ b/src/beacon/bridges/LayerZeroCrossChainMessenger.sol @@ -1,6 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.26; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + import { ICrossChainMessenger, ICrossChainReceiver } from "../interfaces/ICrossChainMessenger.sol"; /// @title LayerZeroCrossChainMessenger @@ -267,27 +271,34 @@ contract LayerZeroCrossChainMessenger is ICrossChainMessenger { /// @notice OApp-compatible receiver for LayerZero V2 messages /// @dev Implements lzReceive to process incoming cross-chain messages /// M-12 FIX: Added message replay protection using GUID -contract LayerZeroReceiver { - /// @notice LayerZero V2 Endpoint - // forge-lint: disable-next-line(screaming-snake-case-immutable) - address public immutable endpoint; - - /// @notice The actual message receiver - // forge-lint: disable-next-line(screaming-snake-case-immutable) - ICrossChainReceiver public immutable receiver; - - /// @notice Trusted peers (eid => peer as bytes32) - mapping(uint32 => bytes32) public peers; - - /// @notice Mapping from LayerZero EID to chain ID - mapping(uint32 => uint256) public eidToChainId; +/// C-3 (Round 4): Converted to UUPS upgradeable. Deploy behind ERC1967Proxy +/// and call `initialize(...)`. +contract LayerZeroReceiver is Initializable, UUPSUpgradeable, OwnableUpgradeable { + /// @custom:storage-location erc7201:tangle.beacon.bridges.LayerZeroReceiver + struct LayerZeroReceiverStorage { + address endpoint; + ICrossChainReceiver receiver; + // eid => peer as bytes32 + mapping(uint32 => bytes32) peers; + // eid => evm chain id + mapping(uint32 => uint256) eidToChainId; + // GUID => processed + mapping(bytes32 => bool) processedMessages; + uint256[50] __gap; + } - /// @notice Owner - address public owner; + /// @notice ERC-7201 slot: + /// keccak256(abi.encode(uint256(keccak256("tangle.beacon.bridges.LayerZeroReceiver")) - 1)) + /// & ~bytes32(uint256(0xff)) + bytes32 private constant LAYERZERO_RECEIVER_SLOT = + 0xc8d6dbf6ee97b652bc4d9630ab7dd428f73833407c880bfe0821be2f767b3a00; - /// @notice M-12 FIX: Track processed message GUIDs to prevent replay attacks - /// @dev LayerZero provides unique GUIDs for each message - mapping(bytes32 => bool) public processedMessages; + function _getStorage() private pure returns (LayerZeroReceiverStorage storage $) { + bytes32 s = LAYERZERO_RECEIVER_SLOT; + assembly { + $.slot := s + } + } /// @notice Events event MessageReceived(uint32 indexed srcEid, bytes32 sender, uint256 sourceChainId, address originalSender); @@ -296,28 +307,49 @@ contract LayerZeroReceiver { /// @notice M-12 FIX: Error for replayed messages error MessageAlreadyProcessed(bytes32 guid); + error ZeroAddress(); - constructor(address _endpoint, address _receiver) { - endpoint = _endpoint; - receiver = ICrossChainReceiver(_receiver); - owner = msg.sender; + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize(address _endpoint, address _receiver, address _owner) external initializer { + if (_owner == address(0)) revert ZeroAddress(); + __UUPSUpgradeable_init(); + __Ownable_init(_owner); + + LayerZeroReceiverStorage storage $ = _getStorage(); + $.endpoint = _endpoint; + $.receiver = ICrossChainReceiver(_receiver); // Initialize common mappings - eidToChainId[30_101] = 1; // Ethereum - eidToChainId[30_110] = 42_161; // Arbitrum - eidToChainId[30_184] = 8453; // Base - eidToChainId[40_161] = 11_155_111; // Sepolia - eidToChainId[40_231] = 421_614; // Arbitrum Sepolia - eidToChainId[40_245] = 84_532; // Base Sepolia + $.eidToChainId[30_101] = 1; // Ethereum + $.eidToChainId[30_110] = 42_161; // Arbitrum + $.eidToChainId[30_184] = 8453; // Base + $.eidToChainId[40_161] = 11_155_111; // Sepolia + $.eidToChainId[40_231] = 421_614; // Arbitrum Sepolia + $.eidToChainId[40_245] = 84_532; // Base Sepolia } - modifier onlyOwner() { - _receiverOnlyOwner(); - _; + function endpoint() external view returns (address) { + return _getStorage().endpoint; } - function _receiverOnlyOwner() internal view { - require(msg.sender == owner, "Only owner"); + function receiver() external view returns (ICrossChainReceiver) { + return _getStorage().receiver; + } + + function peers(uint32 eid) external view returns (bytes32) { + return _getStorage().peers[eid]; + } + + function eidToChainId(uint32 eid) external view returns (uint256) { + return _getStorage().eidToChainId[eid]; + } + + function processedMessages(bytes32 guid) external view returns (bool) { + return _getStorage().processedMessages[guid]; } /// @notice LayerZero V2 receive function @@ -333,55 +365,52 @@ contract LayerZeroReceiver { external payable { - require(msg.sender == endpoint, "Only endpoint"); + LayerZeroReceiverStorage storage $ = _getStorage(); + require(msg.sender == $.endpoint, "Only endpoint"); // Verify sender is trusted peer - require(peers[_origin.srcEid] == _origin.sender, "Untrusted peer"); + require($.peers[_origin.srcEid] == _origin.sender, "Untrusted peer"); // M-12 FIX: Check for replay attack using LayerZero's unique GUID - if (processedMessages[_guid]) { + if ($.processedMessages[_guid]) { revert MessageAlreadyProcessed(_guid); } // M-12 FIX: Mark message as processed before external call (CEI pattern) - processedMessages[_guid] = true; + $.processedMessages[_guid] = true; // Decode message (uint256 sourceChainId, address originalSender, bytes memory payload) = abi.decode(_message, (uint256, address, bytes)); // Verify chain ID matches - require(eidToChainId[_origin.srcEid] == sourceChainId, "Chain mismatch"); + require($.eidToChainId[_origin.srcEid] == sourceChainId, "Chain mismatch"); emit MessageReceived(_origin.srcEid, _origin.sender, sourceChainId, originalSender); emit MessageProcessed(_guid, _origin.srcEid, _origin.sender); // Forward to receiver - receiver.receiveMessage(sourceChainId, originalSender, payload); + $.receiver.receiveMessage(sourceChainId, originalSender, payload); } /// @notice Set trusted peer function setPeer(uint32 eid, bytes32 peer) external onlyOwner { - peers[eid] = peer; + _getStorage().peers[eid] = peer; } /// @notice Set chain mapping function setChainMapping(uint32 eid, uint256 chainId) external onlyOwner { - eidToChainId[eid] = chainId; - } - - /// @notice Transfer ownership - function transferOwnership(address newOwner) external onlyOwner { - require(newOwner != address(0), "Zero address"); - owner = newOwner; + _getStorage().eidToChainId[eid] = chainId; } /// @notice M-12 FIX: Check if a message GUID has been processed - /// @param guid The LayerZero message GUID to check - /// @return True if the message has been processed function isMessageProcessed(bytes32 guid) external view returns (bool) { - return processedMessages[guid]; + return _getStorage().processedMessages[guid]; } + + /// @inheritdoc UUPSUpgradeable + /// @dev Owner-gated. Production owner should be a multisig / timelock. + function _authorizeUpgrade(address newImplementation) internal override onlyOwner { } } /// @notice LayerZero Origin struct diff --git a/test/beacon/CrossChainSlashingTest.t.sol b/test/beacon/CrossChainSlashingTest.t.sol index 554efc7d..d9bfe760 100644 --- a/test/beacon/CrossChainSlashingTest.t.sol +++ b/test/beacon/CrossChainSlashingTest.t.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.26; import { Test, console2 } from "forge-std/Test.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { L2SlashingConnector } from "../../src/beacon/L2SlashingConnector.sol"; import { L2SlashingReceiver, IL2Slasher } from "../../src/beacon/L2SlashingReceiver.sol"; import { TangleL2Slasher } from "../../src/beacon/TangleL2Slasher.sol"; @@ -312,8 +313,15 @@ contract CrossChainSlashingTest is Test { vm.prank(admin); slasher = new TangleL2Slasher(address(staking), admin); - // Deploy L2 receiver - receiver = new L2SlashingReceiver(address(slasher), address(messenger)); + // Deploy L2 receiver behind ERC1967 proxy (UUPS, C-3). + // The test contract is the initial owner so the configuration calls + // (`setAuthorizedSender`) below succeed. + L2SlashingReceiver receiverImpl = new L2SlashingReceiver(); + ERC1967Proxy receiverProxy = new ERC1967Proxy( + address(receiverImpl), + abi.encodeCall(L2SlashingReceiver.initialize, (address(slasher), address(messenger), address(this))) + ); + receiver = L2SlashingReceiver(address(receiverProxy)); // Configure L2 contracts vm.prank(admin); diff --git a/test/beacon/L2SlashingReceiverUUPS.t.sol b/test/beacon/L2SlashingReceiverUUPS.t.sol new file mode 100644 index 00000000..86d89698 --- /dev/null +++ b/test/beacon/L2SlashingReceiverUUPS.t.sol @@ -0,0 +1,288 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import { Test } from "forge-std/Test.sol"; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + +import { L2SlashingReceiver, IL2Slasher } from "../../src/beacon/L2SlashingReceiver.sol"; +import { + ArbitrumL2Receiver +} from "../../src/beacon/bridges/ArbitrumCrossChainMessenger.sol"; +import { + BaseL2Receiver, + IBaseCrossDomainMessenger +} from "../../src/beacon/bridges/BaseCrossChainMessenger.sol"; +import { + HyperlaneReceiver +} from "../../src/beacon/bridges/HyperlaneCrossChainMessenger.sol"; +import { + LayerZeroReceiver +} from "../../src/beacon/bridges/LayerZeroCrossChainMessenger.sol"; + +/// @notice Round 4 audit C-3 — verifies that the L2 slashing receivers are +/// all UUPS upgradeable, ownership-gated, namespaced under ERC-7201, +/// and reject re-initialisation. +contract L2SlashingReceiverUUPSTest is Test { + address internal admin = makeAddr("admin"); + address internal attacker = makeAddr("attacker"); + address internal slasher = makeAddr("slasher"); + address internal messenger = makeAddr("messenger"); + + // ─── helpers ───────────────────────────────────────────────────────────── + + function _newL2Receiver(address _slasher, address _messenger, address _owner) + internal + returns (L2SlashingReceiver receiver, address impl) + { + L2SlashingReceiver implC = new L2SlashingReceiver(); + impl = address(implC); + ERC1967Proxy proxy = new ERC1967Proxy( + impl, abi.encodeCall(L2SlashingReceiver.initialize, (_slasher, _messenger, _owner)) + ); + receiver = L2SlashingReceiver(address(proxy)); + } + + function _newHyperlane(address _mailbox, address _receiver, address _owner) + internal + returns (HyperlaneReceiver h, address impl) + { + HyperlaneReceiver implC = new HyperlaneReceiver(); + impl = address(implC); + ERC1967Proxy proxy = new ERC1967Proxy( + impl, abi.encodeCall(HyperlaneReceiver.initialize, (_mailbox, _receiver, _owner)) + ); + h = HyperlaneReceiver(address(proxy)); + } + + function _newLayerZero(address _endpoint, address _receiver, address _owner) + internal + returns (LayerZeroReceiver lz, address impl) + { + LayerZeroReceiver implC = new LayerZeroReceiver(); + impl = address(implC); + ERC1967Proxy proxy = new ERC1967Proxy( + impl, abi.encodeCall(LayerZeroReceiver.initialize, (_endpoint, _receiver, _owner)) + ); + lz = LayerZeroReceiver(address(proxy)); + } + + function _newArbitrum(address _l1Sender, address _receiver, uint256 _src, address _owner) + internal + returns (ArbitrumL2Receiver a, address impl) + { + ArbitrumL2Receiver implC = new ArbitrumL2Receiver(); + impl = address(implC); + ERC1967Proxy proxy = new ERC1967Proxy( + impl, abi.encodeCall(ArbitrumL2Receiver.initialize, (_l1Sender, _receiver, _src, _owner)) + ); + a = ArbitrumL2Receiver(address(proxy)); + } + + function _newBase( + address _l2Messenger, + address _l1Sender, + address _receiver, + uint256 _src, + address _owner + ) internal returns (BaseL2Receiver b, address impl) { + BaseL2Receiver implC = new BaseL2Receiver(); + impl = address(implC); + ERC1967Proxy proxy = new ERC1967Proxy( + impl, + abi.encodeCall( + BaseL2Receiver.initialize, (_l2Messenger, _l1Sender, _receiver, _src, _owner) + ) + ); + b = BaseL2Receiver(address(proxy)); + } + + // ─── L2SlashingReceiver ────────────────────────────────────────────────── + + function test_L2Receiver_initIsOneShot() public { + (L2SlashingReceiver receiver,) = _newL2Receiver(slasher, messenger, admin); + vm.expectRevert(Initializable.InvalidInitialization.selector); + receiver.initialize(slasher, messenger, admin); + } + + function test_L2Receiver_implementationCannotBeInitialized() public { + L2SlashingReceiver impl = new L2SlashingReceiver(); + vm.expectRevert(Initializable.InvalidInitialization.selector); + impl.initialize(slasher, messenger, admin); + } + + function test_L2Receiver_zeroOwnerReverts() public { + L2SlashingReceiver impl = new L2SlashingReceiver(); + vm.expectRevert(L2SlashingReceiver.ZeroAddress.selector); + new ERC1967Proxy( + address(impl), abi.encodeCall(L2SlashingReceiver.initialize, (slasher, messenger, address(0))) + ); + } + + function test_L2Receiver_upgradeByAdmin() public { + (L2SlashingReceiver receiver,) = _newL2Receiver(slasher, messenger, admin); + L2SlashingReceiver newImpl = new L2SlashingReceiver(); + vm.prank(admin); + receiver.upgradeToAndCall(address(newImpl), ""); + } + + function test_L2Receiver_upgradeByNonAdminReverts() public { + (L2SlashingReceiver receiver,) = _newL2Receiver(slasher, messenger, admin); + L2SlashingReceiver newImpl = new L2SlashingReceiver(); + vm.prank(attacker); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, attacker)); + receiver.upgradeToAndCall(address(newImpl), ""); + } + + function test_L2Receiver_statePersistsAcrossUpgrade() public { + (L2SlashingReceiver receiver,) = _newL2Receiver(slasher, messenger, address(this)); + + // Schedule + activate an authorised sender to populate namespaced storage. + address sender_ = makeAddr("connector"); + receiver.setAuthorizedSender(1, sender_, true); + vm.warp(block.timestamp + receiver.SENDER_ACTIVATION_DELAY() + 1); + receiver.activateAuthorizedSender(1, sender_); + assertTrue(receiver.authorizedSenders(1, sender_), "pre-upgrade: sender authorised"); + assertEq(receiver.messenger(), messenger, "pre-upgrade: messenger wired"); + assertEq(address(receiver.slasher()), slasher, "pre-upgrade: slasher wired"); + + // Upgrade to a fresh implementation. + L2SlashingReceiver newImpl = new L2SlashingReceiver(); + receiver.upgradeToAndCall(address(newImpl), ""); + + // All namespaced state must be intact after the upgrade. + assertTrue(receiver.authorizedSenders(1, sender_), "post-upgrade: sender survived"); + assertEq(receiver.messenger(), messenger, "post-upgrade: messenger survived"); + assertEq(address(receiver.slasher()), slasher, "post-upgrade: slasher survived"); + assertEq(receiver.owner(), address(this), "post-upgrade: owner survived"); + } + + /// @dev Storage layout sanity: writes to the struct land at the namespaced slot and + /// not at slot 0 (which would imply an upgrade-unsafe layout). + function test_L2Receiver_storageLandsAtNamespacedSlot() public { + (L2SlashingReceiver receiver,) = _newL2Receiver(slasher, messenger, address(this)); + + // ERC-7201: keccak256(abi.encode(uint256(keccak256("tangle.beacon.L2SlashingReceiver")) - 1)) & ~0xff + bytes32 nsSlot = 0x82055dbb59125fee25966888e9f62ec781a4d1c7ca467f7e3e2e55d698dfc400; + + // Field 0 is `slasher`, field 1 is `messenger`. + bytes32 raw0 = vm.load(address(receiver), nsSlot); + bytes32 raw1 = vm.load(address(receiver), bytes32(uint256(nsSlot) + 1)); + assertEq(address(uint160(uint256(raw0))), slasher, "slasher at namespaced slot+0"); + assertEq(address(uint160(uint256(raw1))), messenger, "messenger at namespaced slot+1"); + + // Slot 0 must be untouched by these writes (only proxy implementation bookkeeping + // and initializer flags live near the low slots). In particular the receiver + // should not have a non-zero address packed into slot 0. + bytes32 slot0 = vm.load(address(receiver), bytes32(0)); + assertEq(slot0, bytes32(0), "no state at non-namespaced slot 0"); + } + + // ─── ArbitrumL2Receiver ────────────────────────────────────────────────── + + function test_Arbitrum_initIsOneShot() public { + (ArbitrumL2Receiver a,) = _newArbitrum(makeAddr("l1"), makeAddr("rcv"), 1, admin); + vm.expectRevert(Initializable.InvalidInitialization.selector); + a.initialize(makeAddr("l1"), makeAddr("rcv"), 1, admin); + } + + function test_Arbitrum_implCannotBeInitialized() public { + ArbitrumL2Receiver impl = new ArbitrumL2Receiver(); + vm.expectRevert(Initializable.InvalidInitialization.selector); + impl.initialize(makeAddr("l1"), makeAddr("rcv"), 1, admin); + } + + function test_Arbitrum_upgradeAuth() public { + (ArbitrumL2Receiver a,) = _newArbitrum(makeAddr("l1"), makeAddr("rcv"), 1, admin); + ArbitrumL2Receiver impl2 = new ArbitrumL2Receiver(); + vm.prank(attacker); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, attacker)); + a.upgradeToAndCall(address(impl2), ""); + vm.prank(admin); + a.upgradeToAndCall(address(impl2), ""); + } + + // ─── BaseL2Receiver ────────────────────────────────────────────────────── + + function test_Base_initIsOneShot() public { + (BaseL2Receiver b,) = + _newBase(makeAddr("msgr"), makeAddr("l1"), makeAddr("rcv"), 1, admin); + vm.expectRevert(Initializable.InvalidInitialization.selector); + b.initialize(makeAddr("msgr"), makeAddr("l1"), makeAddr("rcv"), 1, admin); + } + + function test_Base_upgradeAuth() public { + (BaseL2Receiver b,) = + _newBase(makeAddr("msgr"), makeAddr("l1"), makeAddr("rcv"), 1, admin); + BaseL2Receiver impl2 = new BaseL2Receiver(); + vm.prank(attacker); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, attacker)); + b.upgradeToAndCall(address(impl2), ""); + vm.prank(admin); + b.upgradeToAndCall(address(impl2), ""); + } + + // ─── HyperlaneReceiver ─────────────────────────────────────────────────── + + function test_Hyperlane_initIsOneShot() public { + (HyperlaneReceiver h,) = _newHyperlane(makeAddr("mb"), makeAddr("rcv"), admin); + vm.expectRevert(Initializable.InvalidInitialization.selector); + h.initialize(makeAddr("mb"), makeAddr("rcv"), admin); + } + + function test_Hyperlane_upgradeAuth() public { + (HyperlaneReceiver h,) = _newHyperlane(makeAddr("mb"), makeAddr("rcv"), admin); + HyperlaneReceiver impl2 = new HyperlaneReceiver(); + vm.prank(attacker); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, attacker)); + h.upgradeToAndCall(address(impl2), ""); + vm.prank(admin); + h.upgradeToAndCall(address(impl2), ""); + } + + function test_Hyperlane_statePersistsAcrossUpgrade() public { + (HyperlaneReceiver h,) = _newHyperlane(makeAddr("mb"), makeAddr("rcv"), address(this)); + address trusted = makeAddr("trusted"); + h.setTrustedSender(42_161, trusted, true); + assertTrue(h.trustedSenders(42_161, bytes32(uint256(uint160(trusted)))), "trusted set"); + + HyperlaneReceiver impl2 = new HyperlaneReceiver(); + h.upgradeToAndCall(address(impl2), ""); + + assertTrue( + h.trustedSenders(42_161, bytes32(uint256(uint160(trusted)))), "trusted survived upgrade" + ); + } + + // ─── LayerZeroReceiver ─────────────────────────────────────────────────── + + function test_LayerZero_initIsOneShot() public { + (LayerZeroReceiver lz,) = _newLayerZero(makeAddr("ep"), makeAddr("rcv"), admin); + vm.expectRevert(Initializable.InvalidInitialization.selector); + lz.initialize(makeAddr("ep"), makeAddr("rcv"), admin); + } + + function test_LayerZero_upgradeAuth() public { + (LayerZeroReceiver lz,) = _newLayerZero(makeAddr("ep"), makeAddr("rcv"), admin); + LayerZeroReceiver impl2 = new LayerZeroReceiver(); + vm.prank(attacker); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, attacker)); + lz.upgradeToAndCall(address(impl2), ""); + vm.prank(admin); + lz.upgradeToAndCall(address(impl2), ""); + } + + function test_LayerZero_statePersistsAcrossUpgrade() public { + (LayerZeroReceiver lz,) = _newLayerZero(makeAddr("ep"), makeAddr("rcv"), address(this)); + bytes32 peer = bytes32(uint256(uint160(makeAddr("peer")))); + lz.setPeer(30_110, peer); + assertEq(lz.peers(30_110), peer); + + LayerZeroReceiver impl2 = new LayerZeroReceiver(); + lz.upgradeToAndCall(address(impl2), ""); + + assertEq(lz.peers(30_110), peer, "peer survived upgrade"); + } +} diff --git a/test/beacon/bridges/CrossChainMessengersTest.t.sol b/test/beacon/bridges/CrossChainMessengersTest.t.sol index c56beae1..7db461d3 100644 --- a/test/beacon/bridges/CrossChainMessengersTest.t.sol +++ b/test/beacon/bridges/CrossChainMessengersTest.t.sol @@ -2,6 +2,8 @@ pragma solidity ^0.8.26; import { Test, stdError } from "forge-std/Test.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import { ArbitrumCrossChainMessenger, @@ -27,6 +29,61 @@ import { } from "../../../src/beacon/bridges/LayerZeroCrossChainMessenger.sol"; import { ICrossChainReceiver } from "../../../src/beacon/interfaces/ICrossChainMessenger.sol"; +/// @notice Helpers to deploy the now-UUPS bridge receivers behind an +/// ERC1967 proxy with the test contract as the initial owner. C-3. +library BridgeReceiverDeploy { + function deployArbitrumL2Receiver( + address l1Sender, + address receiver, + uint256 sourceChainId + ) internal returns (ArbitrumL2Receiver) { + ArbitrumL2Receiver impl = new ArbitrumL2Receiver(); + ERC1967Proxy proxy = new ERC1967Proxy( + address(impl), + abi.encodeCall(ArbitrumL2Receiver.initialize, (l1Sender, receiver, sourceChainId, address(this))) + ); + return ArbitrumL2Receiver(address(proxy)); + } + + function deployBaseL2Receiver( + address l2Messenger, + address l1Sender, + address receiver, + uint256 sourceChainId + ) internal returns (BaseL2Receiver) { + BaseL2Receiver impl = new BaseL2Receiver(); + ERC1967Proxy proxy = new ERC1967Proxy( + address(impl), + abi.encodeCall( + BaseL2Receiver.initialize, (l2Messenger, l1Sender, receiver, sourceChainId, address(this)) + ) + ); + return BaseL2Receiver(address(proxy)); + } + + function deployHyperlaneReceiver( + address mailbox, + address receiver + ) internal returns (HyperlaneReceiver) { + HyperlaneReceiver impl = new HyperlaneReceiver(); + ERC1967Proxy proxy = new ERC1967Proxy( + address(impl), abi.encodeCall(HyperlaneReceiver.initialize, (mailbox, receiver, address(this))) + ); + return HyperlaneReceiver(address(proxy)); + } + + function deployLayerZeroReceiver( + address endpoint, + address receiver + ) internal returns (LayerZeroReceiver) { + LayerZeroReceiver impl = new LayerZeroReceiver(); + ERC1967Proxy proxy = new ERC1967Proxy( + address(impl), abi.encodeCall(LayerZeroReceiver.initialize, (endpoint, receiver, address(this))) + ); + return LayerZeroReceiver(address(proxy)); + } +} + contract MockCrossChainReceiver is ICrossChainReceiver { uint256 public lastSourceChainId; address public lastSender; @@ -325,7 +382,8 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_arbitrumL2Receiver_RelaysFromAliasedSender() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); address l1Sender = makeAddr("l1Sender"); - ArbitrumL2Receiver l2Receiver = new ArbitrumL2Receiver(l1Sender, address(receiver), SOURCE_CHAIN_ID); + ArbitrumL2Receiver l2Receiver = + BridgeReceiverDeploy.deployArbitrumL2Receiver(l1Sender, address(receiver), SOURCE_CHAIN_ID); bytes memory data = abi.encode("hello"); address aliased = l2Receiver.applyL1ToL2Alias(l1Sender); @@ -341,7 +399,8 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_arbitrumL2Receiver_RevertWhenSenderIsNotAliased() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); address l1Sender = makeAddr("l1Sender"); - ArbitrumL2Receiver l2Receiver = new ArbitrumL2Receiver(l1Sender, address(receiver), SOURCE_CHAIN_ID); + ArbitrumL2Receiver l2Receiver = + BridgeReceiverDeploy.deployArbitrumL2Receiver(l1Sender, address(receiver), SOURCE_CHAIN_ID); vm.expectRevert("Invalid sender"); l2Receiver.relayMessage("bad"); @@ -350,7 +409,8 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_arbitrumL2Receiver_RevertOnDuplicatePayload() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); address l1Sender = makeAddr("l1Sender"); - ArbitrumL2Receiver l2Receiver = new ArbitrumL2Receiver(l1Sender, address(receiver), SOURCE_CHAIN_ID); + ArbitrumL2Receiver l2Receiver = + BridgeReceiverDeploy.deployArbitrumL2Receiver(l1Sender, address(receiver), SOURCE_CHAIN_ID); bytes memory data = abi.encode("hello"); address aliased = l2Receiver.applyL1ToL2Alias(l1Sender); @@ -401,8 +461,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_relayMessage_ValidatesMessengerAndSender() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); - BaseL2Receiver l2Receiver = - new BaseL2Receiver(address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID); + BaseL2Receiver l2Receiver = BridgeReceiverDeploy.deployBaseL2Receiver( + address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID + ); bytes memory message = abi.encode("data"); baseMessenger.setXDomainMessageSender(address(this)); @@ -416,8 +477,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_relayMessage_RevertWhenMessengerMismatch() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); - BaseL2Receiver l2Receiver = - new BaseL2Receiver(address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID); + BaseL2Receiver l2Receiver = BridgeReceiverDeploy.deployBaseL2Receiver( + address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID + ); bytes memory message = abi.encode("data"); vm.expectRevert("Only messenger"); @@ -426,8 +488,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_relayMessage_RevertWhenSenderMismatch() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); - BaseL2Receiver l2Receiver = - new BaseL2Receiver(address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID); + BaseL2Receiver l2Receiver = BridgeReceiverDeploy.deployBaseL2Receiver( + address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID + ); bytes memory message = abi.encode("data"); baseMessenger.setXDomainMessageSender(makeAddr("other")); @@ -438,8 +501,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function test_relayMessage_RevertOnDuplicatePayload() public { MockCrossChainReceiver receiver = new MockCrossChainReceiver(); - BaseL2Receiver l2Receiver = - new BaseL2Receiver(address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID); + BaseL2Receiver l2Receiver = BridgeReceiverDeploy.deployBaseL2Receiver( + address(baseMessenger), address(this), address(receiver), SOURCE_CHAIN_ID + ); bytes memory message = abi.encode("data"); baseMessenger.setXDomainMessageSender(address(this)); @@ -688,7 +752,7 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function setUp() public { receiver = new MockCrossChainReceiver(); - lzReceiver = new LayerZeroReceiver(endpoint, address(receiver)); + lzReceiver = BridgeReceiverDeploy.deployLayerZeroReceiver(endpoint, address(receiver)); } function test_lzReceive_ForwardsMessagesFromTrustedPeer() public { @@ -721,8 +785,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { } function test_setPeerRequiresOwner() public { - vm.prank(makeAddr("intruder")); - vm.expectRevert("Only owner"); + address intruder = makeAddr("intruder"); + vm.prank(intruder); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, intruder)); lzReceiver.setPeer(1, bytes32(uint256(1))); } @@ -730,7 +795,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { address newOwner = makeAddr("newOwner"); lzReceiver.transferOwnership(newOwner); - vm.expectRevert("Only owner"); + vm.expectRevert( + abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, address(this)) + ); lzReceiver.setPeer(1, bytes32(uint256(1))); vm.prank(newOwner); @@ -746,7 +813,7 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { function setUp() public { receiver = new MockCrossChainReceiver(); - hyperlaneReceiver = new HyperlaneReceiver(mailbox, address(receiver)); + hyperlaneReceiver = BridgeReceiverDeploy.deployHyperlaneReceiver(mailbox, address(receiver)); } function test_handle_ForwardsTrustedMessage() public { @@ -807,14 +874,16 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { } function test_setTrustedSender_OnlyOwner() public { - vm.prank(makeAddr("intruder")); - vm.expectRevert("Only owner"); + address intruder = makeAddr("intruder"); + vm.prank(intruder); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, intruder)); hyperlaneReceiver.setTrustedSender(1, trustedSender, true); } function test_setDomainMapping_OnlyOwner() public { - vm.prank(makeAddr("intruder")); - vm.expectRevert("Only owner"); + address intruder = makeAddr("intruder"); + vm.prank(intruder); + vm.expectRevert(abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, intruder)); hyperlaneReceiver.setDomainMapping(777, 888); } @@ -822,7 +891,9 @@ contract MockBaseMessenger is IBaseCrossDomainMessenger { address newOwner = makeAddr("newOwner"); hyperlaneReceiver.transferOwnership(newOwner); - vm.expectRevert("Only owner"); + vm.expectRevert( + abi.encodeWithSelector(OwnableUpgradeable.OwnableUnauthorizedAccount.selector, address(this)) + ); hyperlaneReceiver.setTrustedSender(1, trustedSender, true); vm.prank(newOwner); diff --git a/test/security/L2SlashingSilentDedupTest.t.sol b/test/security/L2SlashingSilentDedupTest.t.sol index 80df0371..dbcaced9 100644 --- a/test/security/L2SlashingSilentDedupTest.t.sol +++ b/test/security/L2SlashingSilentDedupTest.t.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.26; import { Test } from "forge-std/Test.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { L2SlashingReceiver, IL2Slasher } from "../../src/beacon/L2SlashingReceiver.sol"; /// @title L2SlashingSilentDedupTest @@ -20,7 +21,11 @@ contract L2SlashingSilentDedupTest is Test { function setUp() public { slasher = new MockSlasher(); - receiver = new L2SlashingReceiver(address(slasher), messenger); + L2SlashingReceiver impl = new L2SlashingReceiver(); + ERC1967Proxy proxy = new ERC1967Proxy( + address(impl), abi.encodeCall(L2SlashingReceiver.initialize, (address(slasher), messenger, address(this))) + ); + receiver = L2SlashingReceiver(address(proxy)); authorizedSender = makeAddr("connector"); receiver.setAuthorizedSender(SOURCE_CHAIN_ID, authorizedSender, true); From 995dcb2a3660e96b46bf54fca38549b4cc57855f Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sun, 10 May 2026 10:22:19 -0600 Subject: [PATCH 2/5] feat(beacon): G-02 share-pool ValidatorPodManager (Round 4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round 4 audit G-02: refactor ValidatorPodManager from raw `int256 podOwnerShares` accounting to per-pod share-pool accounting consistent with the rest of the staking surface (MultiAssetDelegation, LiquidDelegationVault, RewardsManager). Per-pod accounting model: - Each pod owner has an isolated `BeaconPool { totalAssets, totalShares }`. - Beacon-chain rebases (rewards / slashes) move totalAssets only; share balances are unaffected. - Deposits (validator credential proofs) mint shares against the pool at the current exchange rate. Withdrawals burn shares and transfer the asset-equivalent ETH out of the pod. - Virtual offsets (1e3) defend against first-depositor inflation attacks; matches LiquidDelegationVault exactly. Slashing semantics: slashes remain isolated to the affected pod (existing invariant). With one shareholder per pod, "totalAssets -= slashed; shares unchanged" reduces the owner's claimable assets without spreading the loss across other pod owners. Same per-pod-isolation guarantee, now with share-pool math (mulDiv + virtual offset). Withdrawal queue: snapshot `convertToAssets(shares)` at queue time, transfer `min(snapshot, live)` at completion. Beacon slashes between queue and complete still take effect; rebase-up profit between queue and complete stays with remaining shareholders rather than being captured by the redeemer. Public API surface: - `recordBeaconChainDeposit(podOwner, assets)` — mints shares. - `recordBeaconChainRebase(podOwner, assetsDelta)` — moves totalAssets only. - Legacy `recordBeaconChainEthBalanceUpdate(podOwner, sharesDelta)` is preserved for backwards compatibility (positive delta == deposit, negative delta == rebase down). - `getShares(owner)` now returns uint256 (was int256). Negative-share states are no longer representable; full slashes saturate totalAssets at zero and `getRestakedAssets` reflects the residual virtual-offset dust (sub-1000 wei). - New views: `convertToShares`, `convertToAssets`, `totalAssetsOf`, `totalSharesOf`, `getRestakedAssets`. `totalShares()` is now a function returning uint256 (was a public int256 state variable). Tests: 14 new cases in test/beacon/ValidatorPodManagerSharePool.t.sol covering proportional minting, rebase up/down, full-slash saturation, inflation defense, pod isolation, conversion round-trip, withdrawal flows (normal / slashed mid-queue / rewarded mid-queue capped at snapshot), and access control. Existing beacon tests updated to the new share-pool semantics. --- src/beacon/ValidatorPodManager.sol | 382 ++++++++++++++---- test/beacon/BeaconIntegrationTest.t.sol | 43 +- .../beacon/ValidatorPodManagerSharePool.t.sol | 336 +++++++++++++++ test/beacon/ValidatorPodManagerTest.t.sol | 27 +- test/beacon/ValidatorPodTest.t.sol | 7 +- 5 files changed, 693 insertions(+), 102 deletions(-) create mode 100644 test/beacon/ValidatorPodManagerSharePool.t.sol diff --git a/src/beacon/ValidatorPodManager.sol b/src/beacon/ValidatorPodManager.sol index 3dc84eee..b6610513 100644 --- a/src/beacon/ValidatorPodManager.sol +++ b/src/beacon/ValidatorPodManager.sol @@ -7,12 +7,39 @@ import { IStaking } from "../interfaces/IStaking.sol"; import { Types } from "../libraries/Types.sol"; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; /// @title ValidatorPodManager -/// @notice Factory and manager for ValidatorPods, implements IStaking for Tangle integration -/// @dev Creates pods for users, tracks shares, handles delegation to operators +/// @notice Factory and manager for ValidatorPods, implements IStaking for Tangle integration. +/// @dev G-02 (Round 4): Refactored to use O(1) share-pool accounting consistent with the rest of +/// the staking surface (`MultiAssetDelegation`, `LiquidDelegationVault`, `RewardsManager`). +/// +/// Per-pod accounting model: +/// Each pod owner has an isolated share-pool tracked by `BeaconPool { totalAssets, totalShares }` +/// and a per-owner `shares[owner]` balance. Beacon chain rebases (rewards / slashes) move +/// `totalAssets` only -- share balances are unaffected. Deposits (validator credential proofs) +/// mint shares against the pool at the current exchange rate. Withdrawals burn shares and +/// transfer the asset-equivalent ETH out of the pod. +/// +/// Slashing semantics divergence from a Lido-style global pool: +/// We deliberately keep the slash isolated to the affected pod (existing semantics). +/// With one shareholder per pod, "totalAssets -= slashed; shares unchanged" reduces the +/// owner's claimable assets without spreading the loss across other pod owners. This matches +/// the per-pod-isolation invariant the existing contract maintained, while still using +/// share-pool math (virtual offset, mulDiv) so behavior is bit-exact with the rest of Tangle. +/// +/// Virtual offsets (`VIRTUAL_SHARES = VIRTUAL_ASSETS = 1e3`) defend against first-depositor +/// inflation attacks; they match `LiquidDelegationVault` exactly. contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { + using Math for uint256; + uint256 public constant BPS_DENOMINATOR = 10_000; + + /// @notice G-02: Virtual shares/assets offset to prevent first-depositor inflation attack. + /// @dev Following OpenZeppelin ERC4626 pattern, consistent with `LiquidDelegationVault`. + uint256 internal constant VIRTUAL_SHARES = 1e3; + uint256 internal constant VIRTUAL_ASSETS = 1e3; + // ═══════════════════════════════════════════════════════════════════════════ // STATE - CORE // ═══════════════════════════════════════════════════════════════════════════ @@ -37,15 +64,23 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { uint256 public podCount; // ═══════════════════════════════════════════════════════════════════════════ - // STATE - SHARES + // STATE - SHARES (G-02: SHARE-POOL ACCOUNTING) // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Shares by pod owner (can be negative if slashed below initial) - /// @dev Represents restaked beacon chain ETH in wei - mapping(address owner => int256) public podOwnerShares; + /// @notice Per-pod share-pool state. One pool per pod owner. + struct BeaconPool { + uint256 totalAssets; // Beacon-chain ETH (in wei) attributable to this pod + uint256 totalShares; // Outstanding shares for this pod + } + + /// @notice Pool state by pod owner + mapping(address owner => BeaconPool) internal _pools; - /// @notice Total shares across all pod owners - int256 public totalShares; + /// @notice Per-owner share balance + mapping(address owner => uint256) internal _shares; + + /// @notice Aggregate shares across all pools (informational, not used for accounting) + uint256 internal _aggregateShares; // ═══════════════════════════════════════════════════════════════════════════ // STATE - OPERATORS & DELEGATION @@ -57,13 +92,13 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { /// @notice Operator self-stake mapping(address operator => uint256) public operatorStake; - /// @notice Delegation from pod owner to operator + /// @notice Delegation from pod owner to operator (in asset units) mapping(address delegator => mapping(address operator => uint256)) public delegations; - /// @notice Total delegated to an operator + /// @notice Total delegated to an operator (in asset units) mapping(address operator => uint256) public operatorDelegatedStake; - /// @notice H-3 FIX: Total amount delegated by a delegator + /// @notice H-3 FIX: Total amount delegated by a delegator (in asset units) mapping(address delegator => uint256) public delegatorTotalDelegated; /// @notice H-4 FIX: Track delegators per operator for proportional slashing @@ -80,9 +115,16 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { // ═══════════════════════════════════════════════════════════════════════════ /// @notice Withdrawal request structure + /// @dev `shares` is denominated in pool shares (G-02). `assets` is the asset value + /// locked in at queue time (snapshot of `convertToAssets(shares)`), to ensure + /// the staker receives no more than they had at request time even if the pool + /// rebases up before completion. The actual transferred amount is the minimum + /// of the snapshot and the live value at completion (so beacon slashes between + /// queue and complete still take effect). struct Withdrawal { address staker; uint256 shares; + uint256 assets; uint32 startBlock; bool completed; } @@ -133,7 +175,18 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { // ═══════════════════════════════════════════════════════════════════════════ event PodCreated(address indexed owner, address indexed pod); - event SharesUpdated(address indexed owner, int256 sharesDelta, int256 newShares); + + /// @notice G-02: Emitted when shares are minted/burned for an owner. + event SharesUpdated( + address indexed owner, int256 sharesDelta, uint256 newShares, uint256 totalAssets, uint256 totalSharesPool + ); + + /// @notice G-02: Emitted when the pool's totalAssets is updated by a beacon chain rebase + /// (rewards/slash). Shares are unchanged; only the share price moves. + event BeaconRebase( + address indexed owner, int256 assetsDelta, uint256 newTotalAssets, uint256 totalSharesPool + ); + event OperatorRegistered(address indexed operator); event OperatorDeregistered(address indexed operator); event Delegated(address indexed delegator, address indexed operator, uint256 amount); @@ -146,8 +199,12 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { ); event SlasherUpdated(address indexed slasher, bool authorized); event DelegatorSlashed(address indexed delegator, address indexed operator, uint256 amount); - event WithdrawalQueued(bytes32 indexed withdrawalRoot, address indexed staker, uint256 shares); - event WithdrawalCompleted(bytes32 indexed withdrawalRoot, address indexed staker, uint256 shares); + event WithdrawalQueued( + bytes32 indexed withdrawalRoot, address indexed staker, uint256 shares, uint256 assets + ); + event WithdrawalCompleted( + bytes32 indexed withdrawalRoot, address indexed staker, uint256 shares, uint256 assets + ); event WithdrawalDelaySet(uint32 oldDelay, uint32 newDelay); // ═══════════════════════════════════════════════════════════════════════════ @@ -164,6 +221,7 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { error NotAuthorizedSlasher(); error ZeroAddress(); error ZeroAmount(); + error ZeroShares(); error WithdrawalNotFound(); error WithdrawalNotReady(); error WithdrawalAlreadyCompleted(); @@ -173,6 +231,7 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { error UndelegationNotFound(); error UndelegationNotReady(); error UndelegationAlreadyCompleted(); + error InvalidDelta(); // ═══════════════════════════════════════════════════════════════════════════ // CONSTRUCTOR @@ -229,24 +288,150 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { } // ═══════════════════════════════════════════════════════════════════════════ - // SHARE MANAGEMENT (called by pods) + // SHARE-POOL CONVERSION HELPERS (G-02) // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Record a balance update from a pod + /// @notice Convert assets to shares for a specific pool, rounding shares DOWN. + /// @dev Matches OpenZeppelin ERC4626 deposit semantics: depositor cannot mint + /// more shares than the asset contribution warrants. + function _convertToShares(BeaconPool storage pool, uint256 assets) internal view returns (uint256) { + return assets.mulDiv(pool.totalShares + VIRTUAL_SHARES, pool.totalAssets + VIRTUAL_ASSETS, Math.Rounding.Floor); + } + + /// @notice Convert shares to assets for a specific pool, rounding assets DOWN. + /// @dev Matches OpenZeppelin ERC4626 redeem semantics: redeemer cannot withdraw + /// more assets than the shares warrant. + function _convertToAssets(BeaconPool storage pool, uint256 shares) internal view returns (uint256) { + return shares.mulDiv(pool.totalAssets + VIRTUAL_ASSETS, pool.totalShares + VIRTUAL_SHARES, Math.Rounding.Floor); + } + + /// @notice Public view: convert assets to shares for `owner`'s pool. + function convertToShares(address owner, uint256 assets) external view returns (uint256) { + return _convertToShares(_pools[owner], assets); + } + + /// @notice Public view: convert shares to assets for `owner`'s pool. + function convertToAssets(address owner, uint256 shares) external view returns (uint256) { + return _convertToAssets(_pools[owner], shares); + } + + /// @notice Public view: total assets in `owner`'s pool (live beacon-chain ETH). + function totalAssetsOf(address owner) external view returns (uint256) { + return _pools[owner].totalAssets; + } + + /// @notice Public view: total shares outstanding in `owner`'s pool. + function totalSharesOf(address owner) external view returns (uint256) { + return _pools[owner].totalShares; + } + + /// @notice Public view: aggregate shares across all pools (informational). + function totalShares() external view returns (uint256) { + return _aggregateShares; + } + + // ═══════════════════════════════════════════════════════════════════════════ + // SHARE MANAGEMENT (called by pods) -- G-02 SHARE-POOL + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Record a beacon-chain principal deposit (validator credential proof). + /// @dev Mints pool shares for `podOwner` against the current pool exchange rate. + /// Called by `ValidatorPod.verifyWithdrawalCredentials` when new principal + /// becomes attributable to this pod. Only callable by the owner's pod. /// @param podOwner The pod owner - /// @param sharesDelta Change in shares (can be negative) - /// @dev Only callable by a valid pod + /// @param assets Principal added to the pod (in wei, must be > 0) + /// @return mintedShares Number of shares minted to `podOwner` + function recordBeaconChainDeposit(address podOwner, uint256 assets) + external + returns (uint256 mintedShares) + { + address pod = ownerToPod[podOwner]; + if (msg.sender != pod) revert OnlyPod(); + if (assets == 0) revert ZeroAmount(); + + BeaconPool storage pool = _pools[podOwner]; + + mintedShares = _convertToShares(pool, assets); + if (mintedShares == 0) revert ZeroShares(); + + pool.totalAssets += assets; + pool.totalShares += mintedShares; + _shares[podOwner] += mintedShares; + _aggregateShares += mintedShares; + + // assets fits in int256 because uint256 -> int256 cast guarded by reasonable bounds + // forge-lint: disable-next-line(unsafe-typecast) + emit SharesUpdated(podOwner, int256(mintedShares), _shares[podOwner], pool.totalAssets, pool.totalShares); + } + + /// @notice Record a beacon-chain rebase (rewards or slash). + /// @dev Updates `totalAssets` only -- shares are unchanged, share price moves. + /// Called by `ValidatorPod._finalizeCheckpoint`. Only callable by the owner's pod. + /// A negative `assetsDelta` representing more than the current pool balance + /// saturates `totalAssets` to zero (full slash) instead of reverting. + /// @param podOwner The pod owner + /// @param assetsDelta Signed change in beacon-chain assets (can be negative) + function recordBeaconChainRebase(address podOwner, int256 assetsDelta) external { + address pod = ownerToPod[podOwner]; + if (msg.sender != pod) revert OnlyPod(); + + BeaconPool storage pool = _pools[podOwner]; + uint256 newTotal; + if (assetsDelta >= 0) { + // forge-lint: disable-next-line(unsafe-typecast) + newTotal = pool.totalAssets + uint256(assetsDelta); + } else { + // forge-lint: disable-next-line(unsafe-typecast) + uint256 absDelta = uint256(-assetsDelta); + newTotal = absDelta >= pool.totalAssets ? 0 : pool.totalAssets - absDelta; + } + pool.totalAssets = newTotal; + + emit BeaconRebase(podOwner, assetsDelta, newTotal, pool.totalShares); + } + + /// @notice Backward-compatible balance update entry point. + /// @dev Translates the legacy `(owner, int256 delta)` signature into share-pool ops: + /// - If `delta > 0` AND the owner has no shares yet: treat as a fresh deposit. + /// - If `delta > 0` AND the owner already has shares: caller must use the explicit + /// `recordBeaconChainDeposit` / `recordBeaconChainRebase` methods. We default to + /// `recordBeaconChainDeposit` here for back-compat with the original semantics + /// ("positive delta == principal added"); rebases up should not have used this + /// legacy path historically. + /// - If `delta < 0`: treat as a rebase down (slash). + /// Prefer the explicit methods in new code. function recordBeaconChainEthBalanceUpdate(address podOwner, int256 sharesDelta) external { address pod = ownerToPod[podOwner]; if (msg.sender != pod) revert OnlyPod(); - int256 currentShares = podOwnerShares[podOwner]; - int256 newShares = currentShares + sharesDelta; + if (sharesDelta == 0) revert InvalidDelta(); + + BeaconPool storage pool = _pools[podOwner]; + + if (sharesDelta > 0) { + // Treat positive delta as principal deposit (mints shares). + // forge-lint: disable-next-line(unsafe-typecast) + uint256 assets = uint256(sharesDelta); + uint256 mintedShares = _convertToShares(pool, assets); + if (mintedShares == 0) revert ZeroShares(); - podOwnerShares[podOwner] = newShares; - totalShares += sharesDelta; + pool.totalAssets += assets; + pool.totalShares += mintedShares; + _shares[podOwner] += mintedShares; + _aggregateShares += mintedShares; - emit SharesUpdated(podOwner, sharesDelta, newShares); + // forge-lint: disable-next-line(unsafe-typecast) + emit SharesUpdated( + podOwner, int256(mintedShares), _shares[podOwner], pool.totalAssets, pool.totalShares + ); + } else { + // Negative delta: rebase down (beacon chain slash). + // forge-lint: disable-next-line(unsafe-typecast) + uint256 absDelta = uint256(-sharesDelta); + uint256 newTotal = absDelta >= pool.totalAssets ? 0 : pool.totalAssets - absDelta; + pool.totalAssets = newTotal; + emit BeaconRebase(podOwner, sharesDelta, newTotal, pool.totalShares); + } } // ═══════════════════════════════════════════════════════════════════════════ @@ -299,19 +484,20 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { // DELEGATION // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Delegate beacon chain ETH shares to an operator + /// @notice Delegate beacon chain ETH to an operator (in asset units). + /// @dev G-02: availability is checked against `convertToAssets(shares[owner])` rather + /// than the legacy raw `podOwnerShares[owner]`. The delegation amount is denominated + /// in assets so an upstream rebase up before undelegation does not reduce headroom. /// @param operator The operator to delegate to /// @param amount Amount to delegate (in wei) function delegateTo(address operator, uint256 amount) external nonReentrant { if (!_operators[operator]) revert NotOperator(); if (amount == 0) revert ZeroAmount(); - int256 availableShares = podOwnerShares[msg.sender]; - uint256 currentDelegated = delegatorTotalDelegated[msg.sender]; // H-3 FIX + uint256 availableAssets = _convertToAssets(_pools[msg.sender], _shares[msg.sender]); + uint256 currentDelegated = delegatorTotalDelegated[msg.sender]; - // availableShares fits in uint256 because negative case handled. - // forge-lint: disable-next-line(unsafe-typecast) - if (availableShares < 0 || uint256(availableShares) < currentDelegated + amount) { + if (availableAssets < currentDelegated + amount) { revert InsufficientShares(); } @@ -323,7 +509,7 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { delegations[msg.sender][operator] += amount; operatorDelegatedStake[operator] += amount; - delegatorTotalDelegated[msg.sender] += amount; // H-3 FIX + delegatorTotalDelegated[msg.sender] += amount; emit Delegated(msg.sender, operator, amount); } @@ -468,47 +654,51 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { } // ═══════════════════════════════════════════════════════════════════════════ - // WITHDRAWAL QUEUE + // WITHDRAWAL QUEUE (G-02: SHARE-DENOMINATED) // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Queue a withdrawal of beacon chain ETH shares - /// @param shares Amount of shares to withdraw (in wei) + /// @notice Queue a withdrawal denominated in pool shares. + /// @dev G-02: This is the canonical share-pool withdrawal API. The asset value + /// transferred at completion is the live `convertToAssets(shares)`, capped at + /// the queue-time snapshot to prevent the staker capturing post-queue rebases up. + /// @param shares Amount of shares to redeem /// @return withdrawalRoot Unique identifier for this withdrawal - /// @dev Must have no pending delegations to withdraw function queueWithdrawal(uint256 shares) external nonReentrant returns (bytes32 withdrawalRoot) { if (shares == 0) revert ZeroAmount(); - // Check staker has sufficient available shares - int256 currentShares = podOwnerShares[msg.sender]; - uint256 delegated = delegatorTotalDelegated[msg.sender]; - uint256 queued = queuedShares[msg.sender]; + BeaconPool storage pool = _pools[msg.sender]; // Must undelegate before withdrawing - if (delegated > 0) revert HasPendingDelegations(); + if (delegatorTotalDelegated[msg.sender] > 0) revert HasPendingDelegations(); - // Available = total shares - already queued - // forge-lint: disable-next-line(unsafe-typecast) - if (currentShares < 0 || uint256(currentShares) < queued + shares) { - revert InsufficientShares(); - } + uint256 ownerShares = _shares[msg.sender]; + uint256 alreadyQueued = queuedShares[msg.sender]; + if (ownerShares < alreadyQueued + shares) revert InsufficientShares(); + + // Snapshot the asset equivalent at queue time. Even if the pool rebases up before + // completion, the staker only receives this snapshot (rebase-up profit is socialized + // back to the pool). Rebase-down (slash) takes effect via the live convertToAssets. + uint256 assetSnapshot = _convertToAssets(pool, shares); // Generate unique withdrawal root uint256 nonce = withdrawalNonce[msg.sender]++; - withdrawalRoot = keccak256(abi.encodePacked(msg.sender, shares, block.number, nonce)); + withdrawalRoot = keccak256(abi.encodePacked(msg.sender, shares, assetSnapshot, block.number, nonce)); // Store pending withdrawal - pendingWithdrawals[withdrawalRoot] = - Withdrawal({ staker: msg.sender, shares: shares, startBlock: uint32(block.number), completed: false }); + pendingWithdrawals[withdrawalRoot] = Withdrawal({ + staker: msg.sender, shares: shares, assets: assetSnapshot, startBlock: uint32(block.number), completed: false + }); // Track queued shares queuedShares[msg.sender] += shares; - emit WithdrawalQueued(withdrawalRoot, msg.sender, shares); + emit WithdrawalQueued(withdrawalRoot, msg.sender, shares, assetSnapshot); } - /// @notice Complete a pending withdrawal after delay period + /// @notice Complete a pending withdrawal after delay period. + /// @dev G-02: Burns the queued shares against the pool, transfers ETH = min(snapshot, live). + /// Reduces both `pool.totalAssets` and `pool.totalShares` accordingly. /// @param withdrawalRoot The withdrawal identifier - /// @dev Transfers ETH from the pod to the staker function completeWithdrawal(bytes32 withdrawalRoot) external nonReentrant { Withdrawal storage withdrawal = pendingWithdrawals[withdrawalRoot]; @@ -524,39 +714,60 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { // Mark as completed withdrawal.completed = true; - // Reduce shares and queued amount - uint256 shares = withdrawal.shares; - // forge-lint: disable-next-line(unsafe-typecast) - podOwnerShares[msg.sender] -= int256(shares); - // forge-lint: disable-next-line(unsafe-typecast) - totalShares -= int256(shares); - queuedShares[msg.sender] -= shares; + uint256 sharesToBurn = withdrawal.shares; + uint256 snapshotAssets = withdrawal.assets; + + BeaconPool storage pool = _pools[msg.sender]; + + // Live valuation at completion. If pool slashed in the interim, this will be + // smaller than the snapshot -- staker absorbs the slash. If pool gained, the + // snapshot caps payout (rebase-up profit stays with remaining shareholders, if any). + uint256 liveAssets = _convertToAssets(pool, sharesToBurn); + uint256 payout = liveAssets < snapshotAssets ? liveAssets : snapshotAssets; + + // Burn shares against the pool. We never burn more than outstanding. + uint256 burnableShares = sharesToBurn > pool.totalShares ? pool.totalShares : sharesToBurn; + pool.totalShares -= burnableShares; + // payout will not exceed pool.totalAssets because liveAssets <= totalAssets always. + pool.totalAssets = payout >= pool.totalAssets ? 0 : pool.totalAssets - payout; + + _shares[msg.sender] -= sharesToBurn; + _aggregateShares -= burnableShares; + queuedShares[msg.sender] -= sharesToBurn; // Transfer ETH from pod to staker address pod = ownerToPod[msg.sender]; - if (pod != address(0)) { - // Request pod to send ETH to staker - ValidatorPod(payable(pod)).withdrawToStaker(msg.sender, shares); + if (pod != address(0) && payout > 0) { + ValidatorPod(payable(pod)).withdrawToStaker(msg.sender, payout); } - emit WithdrawalCompleted(withdrawalRoot, msg.sender, shares); + emit WithdrawalCompleted(withdrawalRoot, msg.sender, sharesToBurn, payout); } /// @notice Get withdrawal info /// @param withdrawalRoot The withdrawal identifier /// @return staker The staker address - /// @return shares Amount of shares + /// @return shares Amount of shares queued + /// @return assets Snapshot of asset value at queue time /// @return startBlock Block when queued /// @return completed Whether completed /// @return canComplete Whether can be completed now function getWithdrawalInfo(bytes32 withdrawalRoot) external view - returns (address staker, uint256 shares, uint32 startBlock, bool completed, bool canComplete) + returns ( + address staker, + uint256 shares, + uint256 assets, + uint32 startBlock, + bool completed, + bool canComplete + ) { Withdrawal storage w = pendingWithdrawals[withdrawalRoot]; staker = w.staker; shares = w.shares; + assets = w.assets; startBlock = w.startBlock; completed = w.completed; canComplete = !completed && block.number >= startBlock + withdrawalDelayBlocks; @@ -566,16 +777,19 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { /// @param staker The staker address /// @return available Shares available to queue for withdrawal function getAvailableToWithdraw(address staker) external view returns (uint256 available) { - int256 shares = podOwnerShares[staker]; - if (shares <= 0) return 0; + // G-02: "Available to withdraw" is now expressed in shares. Delegation reduces the + // assets the staker can claim, so we subtract the share-equivalent of the delegated + // assets from their share balance. + uint256 ownerShares = _shares[staker]; + if (ownerShares == 0) return 0; - uint256 delegated = delegatorTotalDelegated[staker]; uint256 queued = queuedShares[staker]; - uint256 used = delegated + queued; + uint256 delegatedAssets = delegatorTotalDelegated[staker]; + uint256 delegatedShares = delegatedAssets == 0 ? 0 : _convertToShares(_pools[staker], delegatedAssets); - if (uint256(shares) > used) { - // forge-lint: disable-next-line(unsafe-typecast) - available = uint256(shares) - used; + uint256 used = queued + delegatedShares; + if (ownerShares > used) { + available = ownerShares - used; } } @@ -643,10 +857,8 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { /// @inheritdoc IStaking function getTotalDelegation(address delegator) external view override returns (uint256) { - // Simplified - in production would need to track this - int256 shares = podOwnerShares[delegator]; - // forge-lint: disable-next-line(unsafe-typecast) - return shares > 0 ? uint256(shares) : 0; + // G-02: return the asset-equivalent of the delegator's pod shares. + return _convertToAssets(_pools[delegator], _shares[delegator]); } /// @inheritdoc IStaking @@ -720,7 +932,9 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { } /// @notice Internal slash implementation - /// @dev H-4 FIX: Now proportionally slashes delegators + /// @dev H-4 FIX: Proportionally slashes delegators. Slashing only operates on the + /// operator's self-stake and delegated asset claims, not the underlying pool + /// shares -- beacon-chain-induced slashes flow through `recordBeaconChainRebase`. function _slash(address operator, uint16 slashBps) internal returns (uint256 actualSlashed) { uint256 totalStake = operatorStake[operator] + operatorDelegatedStake[operator]; @@ -849,14 +1063,22 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { } // ═══════════════════════════════════════════════════════════════════════════ - // VIEW FUNCTIONS + // VIEW FUNCTIONS (G-02: SHARE-POOL) // ═══════════════════════════════════════════════════════════════════════════ - /// @notice Get pod owner's shares + /// @notice Get pod owner's pool share balance. + /// @param owner The owner address + /// @return Current pool shares (uint256, share-pool semantics). + function getShares(address owner) external view returns (uint256) { + return _shares[owner]; + } + + /// @notice Get pod owner's asset-equivalent restaked balance. + /// @dev Live valuation: `convertToAssets(shares[owner])`. Reflects rebases. /// @param owner The owner address - /// @return Current shares (can be negative) - function getShares(address owner) external view returns (int256) { - return podOwnerShares[owner]; + /// @return Asset balance in wei + function getRestakedAssets(address owner) external view returns (uint256) { + return _convertToAssets(_pools[owner], _shares[owner]); } /// @notice Check if address has a pod diff --git a/test/beacon/BeaconIntegrationTest.t.sol b/test/beacon/BeaconIntegrationTest.t.sol index a0a6a6dd..13ff1dd6 100644 --- a/test/beacon/BeaconIntegrationTest.t.sol +++ b/test/beacon/BeaconIntegrationTest.t.sol @@ -161,30 +161,49 @@ contract BeaconIntegrationTest is BeaconTestBase { // SHARE ACCOUNTING TESTS // ═══════════════════════════════════════════════════════════════════════════ + /// @notice G-02: Share-pool semantics replace raw amount accounting. + /// @dev With share-pool, positive deltas via the legacy entrypoint mint shares (deposits), + /// and negative deltas are interpreted as rebases that lower `totalAssets` only + /// (`totalShares` is unchanged). Therefore `getShares` does not track the raw asset + /// amount after a slash -- `getRestakedAssets` does. Pool assets saturate at zero on + /// slashes that exceed the current balance instead of going negative. function test_shareAccounting_PositiveAndNegative() public { ValidatorPod pod = _createPod(podOwner1); - // Initial positive update (validator restaking) + // Initial positive update (validator restaking) -- mints shares 1:1. vm.prank(address(pod)); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); - assertEq(podManager.getShares(podOwner1), 32 ether, "Initial shares"); + assertEq(podManager.getShares(podOwner1), 32 ether, "Initial shares minted 1:1"); + assertEq(podManager.getRestakedAssets(podOwner1), 32 ether, "Initial assets"); - // Positive update (balance increase) + // Second positive update (legacy path treats as additional principal deposit). + // Shares minted = 1e18 * (32e18 + 1e3) / (32e18 + 1e3) = 1e18 (within precision). vm.prank(address(pod)); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 1 ether); - assertEq(podManager.getShares(podOwner1), 33 ether, "After increase"); + // Tolerate sub-1000 wei dust from the virtual offset arithmetic. + assertApproxEqAbs(podManager.getShares(podOwner1), 33 ether, 1000, "After 2nd deposit shares"); + assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 33 ether, 1000, "After 2nd deposit assets"); - // Negative update (slashing on beacon chain) + // Negative update (slashing on beacon chain): totalAssets decreases, shares unchanged. + uint256 sharesBefore = podManager.getShares(podOwner1); vm.prank(address(pod)); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -5 ether); - assertEq(podManager.getShares(podOwner1), 28 ether, "After slashing"); + assertEq(podManager.getShares(podOwner1), sharesBefore, "Shares unchanged on slash"); + // Virtual offset (1e3) introduces sub-1000 wei rounding dust between totalAssets + // and convertToAssets(totalShares). Tolerate it here. + assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 28 ether, 1000, "Assets reduced by slash"); - // Large negative (can go negative if slashed more than deposited) + // Large negative: pool totalAssets saturates at zero (cannot go below zero). vm.prank(address(pod)); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -30 ether); - assertEq(podManager.getShares(podOwner1), -2 ether, "Shares can be negative"); + assertEq(podManager.totalAssetsOf(podOwner1), 0, "totalAssets saturates at zero"); + // With totalAssets at zero, convertToAssets(shares) returns + // shares * VIRTUAL_ASSETS / (totalShares + VIRTUAL_SHARES) = up to VIRTUAL_ASSETS-1 wei. + // This is the documented "phantom assets" residue from the virtual offset (sub-1000 wei). + assertLt(podManager.getRestakedAssets(podOwner1), 1000, "Assets <= virtual offset on full slash"); } + /// @notice G-02: aggregate shares sums per-pool shares; a rebase down does not change shares. function test_shareAccounting_TotalSharesTracking() public { ValidatorPod pod1 = _createPod(podOwner1); ValidatorPod pod2 = _createPod(podOwner2); @@ -195,13 +214,15 @@ contract BeaconIntegrationTest is BeaconTestBase { vm.prank(address(pod2)); podManager.recordBeaconChainEthBalanceUpdate(podOwner2, 64 ether); - assertEq(podManager.totalShares(), 96 ether, "Total should be sum"); + assertEq(podManager.totalShares(), 96 ether, "Aggregate shares = sum of mints"); - // Negative update + // Negative update: rebases pool1 down (10 ETH lost), but shares unchanged. vm.prank(address(pod1)); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -10 ether); - assertEq(podManager.totalShares(), 86 ether, "Total should decrease"); + assertEq(podManager.totalShares(), 96 ether, "Aggregate shares unchanged on rebase"); + assertEq(podManager.totalAssetsOf(podOwner1), 22 ether, "pod1 assets reduced by 10"); + assertEq(podManager.totalAssetsOf(podOwner2), 64 ether, "pod2 assets unaffected"); } // ═══════════════════════════════════════════════════════════════════════════ diff --git a/test/beacon/ValidatorPodManagerSharePool.t.sol b/test/beacon/ValidatorPodManagerSharePool.t.sol new file mode 100644 index 00000000..c79f27d7 --- /dev/null +++ b/test/beacon/ValidatorPodManagerSharePool.t.sol @@ -0,0 +1,336 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import { BeaconTestBase } from "./BeaconTestBase.sol"; +import { ValidatorPod } from "../../src/beacon/ValidatorPod.sol"; +import { ValidatorPodManager } from "../../src/beacon/ValidatorPodManager.sol"; + +/// @title ValidatorPodManagerSharePoolTest +/// @notice G-02 (Round 4): Tests for share-pool accounting in ValidatorPodManager. +/// @dev Verifies: +/// - Proportional share minting on multiple deposits. +/// - Rebase up: shareholders see proportional asset gain. +/// - Rebase down (slash): shareholders see proportional asset loss; shares unchanged. +/// - First-depositor inflation defense via virtual offset. +/// - Per-pod isolation: a slash on pod A does not affect pod B. +/// - convertToShares / convertToAssets symmetry within virtual-offset precision. +/// - Withdrawal flow burns shares against the pool and pays out the live (or +/// snapshot, whichever is smaller) asset value. +contract ValidatorPodManagerSharePoolTest is BeaconTestBase { + /// @notice Maximum precision dust from the 1e3 virtual offset. + uint256 internal constant VIRTUAL_OFFSET_DUST = 1000; + + // ═══════════════════════════════════════════════════════════════════════════ + // SHARE MINTING + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Two consecutive deposits from a fresh pool mint shares proportional to assets. + function test_shares_proportionalMintingAcrossDeposits() public { + ValidatorPod pod = _createPod(podOwner1); + + // First deposit: 10 ETH. + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 10 ether); + + uint256 sharesAfterFirst = podManager.getShares(podOwner1); + // First mint is 1:1 due to virtual offset symmetry on empty pool. + assertEq(sharesAfterFirst, 10 ether, "first deposit mints 1:1"); + + // Second deposit: 5 ETH at the same exchange rate (no rebases happened in between). + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 5 ether); + + uint256 sharesAfterSecond = podManager.getShares(podOwner1); + // Should mint approximately +5 ether shares (within virtual-offset dust). + assertApproxEqAbs( + sharesAfterSecond, 15 ether, VIRTUAL_OFFSET_DUST, "second deposit proportional shares" + ); + assertEq(podManager.totalAssetsOf(podOwner1), 15 ether, "totalAssets sums deposits"); + } + + /// @notice After a rebase-up (rewards), shareholders see proportional gain in assets. + function test_rebase_up_assetsIncreaseSharesUnchanged() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + + uint256 sharesBefore = podManager.getShares(podOwner1); + assertEq(podManager.getRestakedAssets(podOwner1), 32 ether, "pre-rebase assets"); + + // Beacon-chain rewards: +1 ETH. + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, int256(1 ether)); + + // Shares unchanged; assets up by 1 ETH (modulo virtual-offset dust). + assertEq(podManager.getShares(podOwner1), sharesBefore, "shares unchanged on rebase up"); + assertApproxEqAbs( + podManager.getRestakedAssets(podOwner1), 33 ether, VIRTUAL_OFFSET_DUST, "assets up by reward" + ); + } + + /// @notice After a rebase-down (slash), shareholders see proportional loss; shares unchanged. + function test_rebase_down_proportionalLoss() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + + uint256 sharesBefore = podManager.getShares(podOwner1); + + // Beacon-chain slash: -8 ETH (-25%). + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, -int256(8 ether)); + + assertEq(podManager.getShares(podOwner1), sharesBefore, "shares unchanged on slash"); + assertApproxEqAbs( + podManager.getRestakedAssets(podOwner1), 24 ether, VIRTUAL_OFFSET_DUST, "assets reduced by slash" + ); + assertEq(podManager.totalAssetsOf(podOwner1), 24 ether, "totalAssets reduced exactly"); + } + + /// @notice An over-large slash saturates totalAssets at zero (no underflow). + function test_rebase_down_saturatesAtZero() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + + // Slash bigger than the pool: should clamp to zero, not revert. + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, -int256(100 ether)); + + assertEq(podManager.totalAssetsOf(podOwner1), 0, "totalAssets clamped to zero"); + // shares still positive (32 ether), but each share now claims only the virtual-offset dust. + assertEq(podManager.getShares(podOwner1), 32 ether, "shares still outstanding"); + assertLt( + podManager.getRestakedAssets(podOwner1), VIRTUAL_OFFSET_DUST, "assets <= virtual offset on full slash" + ); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // INFLATION ATTACK DEFENSE + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice The classic ERC4626 first-depositor inflation attack is impossible because + /// each pod has a single owner. We still verify the virtual-offset math: + /// a 1-wei deposit followed by a large donation does not let the attacker + /// skim the second-depositor's funds (here, the second deposit is the same owner). + /// @dev This test exercises the conversion math that guards against share inflation, + /// even though the multi-shareholder attack vector is structurally absent. + function test_inflation_firstDepositOneWeiThenLargeDonation() public { + ValidatorPod pod = _createPod(podOwner1); + + // Step 1: depositor seeds the pool with a 1-wei deposit. + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 1); + + uint256 sharesAfterSeed = podManager.getShares(podOwner1); + // Virtual-offset math: shares = 1 * (0 + 1e3) / (0 + 1e3) = 1. + assertEq(sharesAfterSeed, 1, "seed deposit mints 1 share"); + + // Step 2: a "donation" arrives via rebase-up of 1000 ETH. + // In a multi-depositor design, this is the inflation attack: the seed depositor + // would have a 1-share claim on a 1000 ETH pool. With the virtual offset, the + // second depositor is still protected. + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, int256(1000 ether)); + + // Step 3: simulate a "second" deposit on top of the inflated pool. Same owner here + // since one pod = one owner; we exercise the math. + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 100 ether); + + // The new mint must reflect proportional ownership of the new contribution. + // Without the virtual offset, the second deposit would mint 0 shares (rounding to 0). + // With virtual offset (1e3), it mints a proportionally-correct number of shares + // bounded below by the inflation-defense floor. + uint256 totalSharesAfter = podManager.totalSharesOf(podOwner1); + uint256 totalAssetsAfter = podManager.totalAssetsOf(podOwner1); + assertEq(totalAssetsAfter, 1 + 1000 ether + 100 ether, "totalAssets sums all contributions"); + // totalShares should still grow: virtual offset prevents zero-mint. + assertGt(totalSharesAfter, sharesAfterSeed, "second deposit mints non-zero shares"); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // PER-POD ISOLATION + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice A slash on one pod does not affect another pod's share/asset accounting. + /// @dev This is the per-pod-isolation invariant we preserve over the Lido-style + /// global-pool model. + function test_isolation_slashOnPodADoesNotAffectPodB() public { + ValidatorPod podA = _createPod(podOwner1); + ValidatorPod podB = _createPod(podOwner2); + + vm.prank(address(podA)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + vm.prank(address(podB)); + podManager.recordBeaconChainDeposit(podOwner2, 32 ether); + + // Slash pod A by 16 ETH. + vm.prank(address(podA)); + podManager.recordBeaconChainRebase(podOwner1, -int256(16 ether)); + + assertEq(podManager.totalAssetsOf(podOwner1), 16 ether, "podA assets reduced"); + assertEq(podManager.totalAssetsOf(podOwner2), 32 ether, "podB assets unaffected"); + assertEq(podManager.getShares(podOwner2), 32 ether, "podB shares unaffected"); + assertEq( + podManager.getRestakedAssets(podOwner2), 32 ether, "podB asset-equivalent unchanged" + ); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // CONVERSION HELPERS + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice convertToShares / convertToAssets are inverses up to virtual-offset rounding. + function test_conversion_roundTripStable() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 100 ether); + + uint256 assets = 17 ether; + uint256 shares = podManager.convertToShares(podOwner1, assets); + uint256 assetsBack = podManager.convertToAssets(podOwner1, shares); + + // Floor rounding on both directions yields assetsBack <= assets, with bounded loss. + assertLe(assetsBack, assets, "round-trip is non-increasing (floor rounding)"); + assertApproxEqAbs(assetsBack, assets, VIRTUAL_OFFSET_DUST, "round-trip precision"); + } + + /// @notice convertToShares deposit-direction rounds shares DOWN. + function test_conversion_depositRoundsDown() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 1 ether); + + // After a small odd-amount rebase up, the price is 1.5x (not exact). + // Then convertToShares of 1 wei should round DOWN to zero shares. + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, int256(1 ether)); + + uint256 oneWeiShares = podManager.convertToShares(podOwner1, 1); + assertEq(oneWeiShares, 0, "1 wei converts to 0 shares (rounds down)"); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // WITHDRAWAL FLOW (G-02: SHARE-DENOMINATED) + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Withdrawal queues shares; on completion the staker receives min(snapshot, live). + function test_withdrawal_normalFlow() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + + // Fund pod with ETH for withdrawal. + vm.deal(address(pod), 32 ether); + + // Queue a 10-share withdrawal. At 1:1 rate this snapshots 10 ETH. + vm.prank(podOwner1); + bytes32 root = podManager.queueWithdrawal(10 ether); + + vm.roll(block.number + podManager.withdrawalDelayBlocks() + 1); + + uint256 balBefore = podOwner1.balance; + vm.prank(podOwner1); + podManager.completeWithdrawal(root); + + // Payout is exactly 10 ETH (snapshot == live, no rebase happened). + assertEq(podOwner1.balance, balBefore + 10 ether, "exact payout at unchanged rate"); + assertEq(podManager.getShares(podOwner1), 22 ether, "remaining shares decreased"); + assertEq(podManager.totalAssetsOf(podOwner1), 22 ether, "pool totalAssets reduced"); + assertEq(podManager.totalSharesOf(podOwner1), 22 ether, "pool totalShares reduced"); + } + + /// @notice If the pool rebases DOWN between queue and complete, staker absorbs the slash. + function test_withdrawal_slashBetweenQueueAndComplete() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + + // Queue 16 shares (snapshot = 16 ETH at current rate). + vm.prank(podOwner1); + bytes32 root = podManager.queueWithdrawal(16 ether); + + // Slash 50%: pool now totalAssets = 16 ETH, totalShares = 32 ETH. + // Live convertToAssets(16) = 16 * (16e18 + 1e3) / (32e18 + 1e3) ~= 8 ETH. + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, -int256(16 ether)); + + // Fund pod for the (reduced) payout. Slightly over-fund to absorb any virtual-offset dust. + vm.deal(address(pod), 9 ether); + + vm.roll(block.number + podManager.withdrawalDelayBlocks() + 1); + + uint256 balBefore = podOwner1.balance; + vm.prank(podOwner1); + podManager.completeWithdrawal(root); + + // Payout ~= 8 ETH (live), bounded above by the 16 ETH snapshot. + uint256 received = podOwner1.balance - balBefore; + assertApproxEqAbs(received, 8 ether, VIRTUAL_OFFSET_DUST, "payout reflects slash"); + assertLe(received, 16 ether, "payout <= queue-time snapshot"); + } + + /// @notice If the pool rebases UP between queue and complete, payout is capped at snapshot. + function test_withdrawal_rewardsBetweenQueueAndCompleteCappedAtSnapshot() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + + // Queue 8 shares (snapshot = 8 ETH). + vm.prank(podOwner1); + bytes32 root = podManager.queueWithdrawal(8 ether); + + // Rewards: +16 ETH. Pool: assets=48, shares=32. Live convertToAssets(8) = 12 ETH. + vm.prank(address(pod)); + podManager.recordBeaconChainRebase(podOwner1, int256(16 ether)); + + vm.deal(address(pod), 16 ether); + + vm.roll(block.number + podManager.withdrawalDelayBlocks() + 1); + + uint256 balBefore = podOwner1.balance; + vm.prank(podOwner1); + podManager.completeWithdrawal(root); + + // Payout capped at 8 ETH snapshot (post-queue rebase up stays with the pool). + uint256 received = podOwner1.balance - balBefore; + assertEq(received, 8 ether, "payout capped at snapshot"); + } + + // ═══════════════════════════════════════════════════════════════════════════ + // ACCESS CONTROL + // ═══════════════════════════════════════════════════════════════════════════ + + function test_recordBeaconChainDeposit_OnlyPod() public { + _createPod(podOwner1); + + vm.prank(attacker); + vm.expectRevert(ValidatorPodManager.OnlyPod.selector); + podManager.recordBeaconChainDeposit(podOwner1, 1 ether); + } + + function test_recordBeaconChainRebase_OnlyPod() public { + _createPod(podOwner1); + + vm.prank(attacker); + vm.expectRevert(ValidatorPodManager.OnlyPod.selector); + podManager.recordBeaconChainRebase(podOwner1, int256(1 ether)); + } + + function test_recordBeaconChainDeposit_ZeroAmountReverts() public { + ValidatorPod pod = _createPod(podOwner1); + + vm.prank(address(pod)); + vm.expectRevert(ValidatorPodManager.ZeroAmount.selector); + podManager.recordBeaconChainDeposit(podOwner1, 0); + } +} diff --git a/test/beacon/ValidatorPodManagerTest.t.sol b/test/beacon/ValidatorPodManagerTest.t.sol index 2575e0fb..7aed73cb 100644 --- a/test/beacon/ValidatorPodManagerTest.t.sol +++ b/test/beacon/ValidatorPodManagerTest.t.sol @@ -608,20 +608,26 @@ contract ValidatorPodManagerTest is BeaconTestBase { assertEq(podManager.totalShares(), 32 ether, "Total shares should be updated"); } + /// @notice G-02: Share-pool semantics replace raw amount accounting. + /// @dev Negative deltas (slashes) reduce `totalAssets` only. The owner's `shares` + /// balance is invariant on rebases. function test_recordBeaconChainEthBalanceUpdate_NegativeDelta() public { vm.prank(podOwner1); address podAddr = podManager.createPod(); - // Initial positive update + // Initial positive update mints shares 1:1. vm.prank(podAddr); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); - // Negative delta (slashing) + // Negative delta (slashing) is a rebase-down: assets fall, shares unchanged. vm.prank(podAddr); podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -5 ether); - assertEq(podManager.getShares(podOwner1), 27 ether, "Shares should be reduced"); - assertEq(podManager.totalShares(), 27 ether, "Total shares should be reduced"); + assertEq(podManager.getShares(podOwner1), 32 ether, "Shares unchanged on rebase"); + assertEq(podManager.totalShares(), 32 ether, "Aggregate shares unchanged"); + assertEq(podManager.totalAssetsOf(podOwner1), 27 ether, "Pool assets reduced"); + // Asset-equivalent has tiny dust due to virtual offset (1e3 wei). Tolerate it. + assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 27 ether, 1000, "Owner asset-equivalent reduced"); } function test_recordBeaconChainEthBalanceUpdate_MultiplePods() public { @@ -672,12 +678,13 @@ contract ValidatorPodManagerTest is BeaconTestBase { assertTrue(withdrawalRoot != bytes32(0), "Withdrawal root should be generated"); assertEq(podManager.queuedShares(podOwner1), 10 ether, "Queued shares should be tracked"); - // Check withdrawal info - (address staker, uint256 shares, uint32 startBlock, bool completed, bool canComplete) = + // Check withdrawal info (G-02: tuple now includes asset snapshot). + (address staker, uint256 shares, uint256 assets, uint32 startBlock, bool completed, bool canComplete) = podManager.getWithdrawalInfo(withdrawalRoot); assertEq(staker, podOwner1, "Staker should match"); assertEq(shares, 10 ether, "Shares should match"); + assertEq(assets, 10 ether, "Asset snapshot should equal queued amount at 1:1 rate"); assertEq(startBlock, block.number, "Start block should match"); assertFalse(completed, "Should not be completed"); assertFalse(canComplete, "Should not be able to complete yet"); @@ -765,8 +772,8 @@ contract ValidatorPodManagerTest is BeaconTestBase { // Advance past delay vm.roll(block.number + podManager.withdrawalDelayBlocks() + 1); - // Check can complete - (,,,, bool canComplete) = podManager.getWithdrawalInfo(withdrawalRoot); + // Check can complete (G-02: tuple now includes asset snapshot at index 2). + (,,,,, bool canComplete) = podManager.getWithdrawalInfo(withdrawalRoot); assertTrue(canComplete, "Should be able to complete now"); uint256 balanceBefore = podOwner1.balance; @@ -775,8 +782,8 @@ contract ValidatorPodManagerTest is BeaconTestBase { vm.prank(podOwner1); podManager.completeWithdrawal(withdrawalRoot); - // Verify completion - (,,, bool completed,) = podManager.getWithdrawalInfo(withdrawalRoot); + // Verify completion (G-02: tuple now includes asset snapshot at index 2). + (,,,, bool completed,) = podManager.getWithdrawalInfo(withdrawalRoot); assertTrue(completed, "Should be completed"); assertEq(podOwner1.balance, balanceBefore + 10 ether, "ETH should be transferred"); diff --git a/test/beacon/ValidatorPodTest.t.sol b/test/beacon/ValidatorPodTest.t.sol index 6e40e5e8..cedabe40 100644 --- a/test/beacon/ValidatorPodTest.t.sol +++ b/test/beacon/ValidatorPodTest.t.sol @@ -436,7 +436,12 @@ contract ValidatorPodTest is BeaconTestBase { assertEq(pod.currentCheckpointTimestamp(), 0, "timestamp cleared"); assertEq(pod.lastCompletedCheckpointTimestamp(), checkpointTimestamp, "last checkpoint recorded"); assertEq(pod.totalRestakedBalanceGwei(), newBalance, "restaked balance updated"); - assertEq(podManager.getShares(podOwner1), 31 ether, "shares reflect new balance"); + // G-02: With share-pool accounting, the rebase-down moves `totalAssets` only. + // The pod owner's share balance is unchanged (still 32 ether minted at deposit), + // but the asset-equivalent reflects the new beacon balance (~31 ETH; the virtual + // offset introduces sub-1000 wei dust). + assertEq(podManager.getShares(podOwner1), 32 ether, "shares unchanged on rebase"); + assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 31 ether, 1000, "assets reflect new balance"); uint64 expectedFactor = uint64((uint256(1e18) * uint256(newBalance)) / uint256(initialBalance)); assertEq(pod.beaconChainSlashingFactor(), expectedFactor, "slashing factor applied"); From 1eec313b3ce1641c5ccf00e9c5079a85e28f548c Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sun, 10 May 2026 10:23:50 -0600 Subject: [PATCH 3/5] feat(staking,payments): F5 TWAP-fair subscription billing (Round 4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round 4 audit F5: subscription billing prices a period at the operator stake observed at the bill instant, allowing an operator to ramp stake just before billing and dump it after. With realistic ramp ratios this overcharges customers when stake collapses mid-period and undercharges when it ramps up. Replace flat-rate billing with a TWAP-fair amount derived from cumulative stake-seconds. Staking layer (cum-stake-seconds index): - Add `_cumStakeSeconds[op][asset]` and `_cumStakeSecondsLastUpdate` in DelegationStorage. Compound-v2 / Aave-v3 style index: every stake-changing path folds `prevStake × (now - lastUpdate)` into the running counter BEFORE the underlying stake mutates. - Hooks (`_accrueOperatorStakeSeconds`) added in: - OperatorManager: joinAsOperator (native + ERC20), bondMore, bondMoreERC20, unstakeAsOperator, exitAsOperator. - RewardsManager._onDelegationChanged: covers all delegate / undelegate / reward-pool mutations (single funnel). - SlashingManager: native + asset slash paths. - First accrual seeds `lastUpdate` without area contribution, so pre-existing pools begin TWAP cleanly at upgrade time without back-paying for unobservable history. - Storage gap reduced by 2 (46 → 44). - New view `IStaking.getCumStakeSeconds(operator, asset)` exposed via `StakingViewsFacet`. `ValidatorPodManager` ships a zero stub (subscription billing is not currently routed through beacon-only services; documented inline). Payments layer (TWAP billing): - `_billSubscriptionInternal` and `_tryBillSubscription` now call `_computeTwapBillAmount(serviceId, operators, nominalRate, interval)` which: 1. Aggregates `getCumStakeSeconds` and current stake across the service's active operators for the bond asset. 2. Forward-projects `cum` to the period boundary so missed/late bills don't double-count when the function later advances `lastPaymentAt += interval`. 3. Lazy-initializes the per-service cursor and baseline on first bill (no migration required); first post-init bill returns `nominalRate` exactly. 4. From the next bill onward, bills `nominalRate × cumDeltaPeriod / (baseline × interval)`. - Append `lastBilledCumStake` and `subscriptionBaselineStake` to `PaymentLib.ServiceEscrow`. `_serviceEscrows` is a top-level mapping, so appending preserves all existing storage slots. Tests: 4 cases in test/security/F5TWAPBilling.t.sol — constant stake bills nominal, doubled mid-period bills 1.5×, halved mid-period bills 0.75×, mid-period slash bills by post-slash stake. Mock IStaking impls in CrossChainSlashing and DeploymentScripts tests gain zero-return `getCumStakeSeconds` to satisfy the interface. --- bindings/CHANGELOG.md | 48 ++++- src/beacon/ValidatorPodManager.sol | 20 ++ src/core/Payments.sol | 159 +++++++++++++-- src/facets/staking/StakingViewsFacet.sol | 19 +- src/interfaces/IStaking.sol | 24 +++ src/libraries/PaymentLib.sol | 14 ++ src/staking/DelegationManagerLib.sol | 18 -- src/staking/DelegationStorage.sol | 129 ++++++++++++- src/staking/OperatorManager.sol | 29 +++ src/staking/RewardsManager.sol | 4 + src/staking/SlashingManager.sol | 6 + test/beacon/CrossChainSlashingTest.t.sol | 13 ++ test/scripts/DeploymentScriptsTest.t.sol | 13 ++ test/security/F5TWAPBilling.t.sol | 236 +++++++++++++++++++++++ 14 files changed, 691 insertions(+), 41 deletions(-) create mode 100644 test/security/F5TWAPBilling.t.sol diff --git a/bindings/CHANGELOG.md b/bindings/CHANGELOG.md index ab3facb4..a066a1f7 100644 --- a/bindings/CHANGELOG.md +++ b/bindings/CHANGELOG.md @@ -7,11 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.15.0] - 2026-05-08 +## [0.15.0] - 2026-05-09 + +Round 4 audit consolidation: C-3 (UUPS upgradeable cross-chain slashing +receivers), F5 (TWAP-fair subscription billing), G-02 (share-pool +ValidatorPodManager). Single coordinated bindings cut. ### Changed (BREAKING) -- Round 4 audit C-3: `L2SlashingReceiver` and the four bridge-adapter receivers +- Round 4 C-3: `L2SlashingReceiver` and the four bridge-adapter receivers (`ArbitrumL2Receiver`, `BaseL2Receiver`, `HyperlaneReceiver`, `LayerZeroReceiver`) are now UUPS upgradeable. The deploy interface is changed from a plain `new Contract(...)` to a proxy + `initialize(...)` pair, and the @@ -24,6 +28,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `address(0)` with `OwnableInvalidOwner` instead of `"Zero address"`. There is no in-place storage migration path; existing deployments must be redeployed behind a fresh proxy and re-authorised. +- Round 4 F5: `Tangle.billSubscription(uint64)` now bills the TWAP-fair amount + derived from cumulative stake-seconds instead of a flat `subscriptionRate`. + The previous billing path priced the period at the operator's stake at the + bill instant, which let an operator ramp stake immediately before billing and + dump it after — overcharging customers when stake ramped down mid-period and + undercharging when it ramped up. Billing now uses + `rate × cumDelta / (baseline × interval)` where `cumDelta` is the change in + aggregate cumulative stake-seconds across the service's active operators for + the bond asset, and `baseline` is captured at the first bill (lazy init) and + frozen for the life of the subscription. +- Round 4 F5: `IStaking` gained `getCumStakeSeconds(operator, asset)`. + Implementations must fold elapsed time × current stake into the running + counter on every stake-changing path. The in-tree `MultiAssetDelegation` + ships the working implementation; `ValidatorPodManager` ships a zero stub + (subscription billing is not currently routed through beacon-only services). +- Round 4 F5: `PaymentLib.ServiceEscrow` gained `lastBilledCumStake` and + `subscriptionBaselineStake` fields appended at the end of the struct. + Existing storage slots are preserved; pre-upgrade subscriptions are + lazy-initialized on the first post-upgrade `billSubscription` call (no + migration required). +- Round 4 G-02: `ValidatorPodManager` refactored to per-pod share-pool + accounting (`BeaconPool { totalAssets, totalShares }`) consistent with + `MultiAssetDelegation` and `LiquidDelegationVault`. Beacon rebases now move + `totalAssets` only — `shares` are invariant. Slashes remain isolated to the + affected pod. New entry points `recordBeaconChainDeposit` (mints shares) and + `recordBeaconChainRebase` (changes assets only) replace the implicit + `(int256 sharesDelta)` semantics; the legacy + `recordBeaconChainEthBalanceUpdate(address, int256)` is preserved as a + back-compat shim (positive delta == deposit, negative delta == rebase down). + `getShares` now returns `uint256` (was `int256`); negative-share states are + no longer representable. `totalShares()` is now a function returning + `uint256` (was a public `int256` state variable). Withdrawal queue snapshots + `convertToAssets(shares)` at queue time and pays out `min(snapshot, live)` at + completion. + +### Added + +- Round 4 G-02: `ValidatorPodManager` views `convertToShares`, + `convertToAssets`, `totalAssetsOf`, `totalSharesOf`, `getRestakedAssets` for + share-pool introspection. ## [0.14.0] - 2026-05-08 diff --git a/src/beacon/ValidatorPodManager.sol b/src/beacon/ValidatorPodManager.sol index b6610513..b02e0fbe 100644 --- a/src/beacon/ValidatorPodManager.sol +++ b/src/beacon/ValidatorPodManager.sol @@ -1022,6 +1022,26 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { return 0; // ValidatorPodManager doesn't track pending slashes this way } + /// @inheritdoc IStaking + /// @dev F5 stub: ValidatorPodManager does not host the staking-pool index used by + /// `Payments.billSubscription`. Returning zeros makes any subscription that + /// points its bill aggregation at this staking adapter degrade to flat-rate + /// billing (cumDelta = 0 → bill = 0; lazy-init then seeds baseline at 1 and + /// subsequent bills also accrue 0). Beacon-only subscriptions are not a + /// supported deployment shape today, so emitting a zero stake-seconds index + /// here is intentional and deliberate. + function getCumStakeSeconds( + address operator, + Types.Asset calldata asset + ) + external + view + override + returns (uint256, uint64, uint256) + { + return (0, 0, this.getOperatorStakeForAsset(operator, asset)); + } + // ═══════════════════════════════════════════════════════════════════════════ // ADMIN // ═══════════════════════════════════════════════════════════════════════════ diff --git a/src/core/Payments.sol b/src/core/Payments.sol index 5ed87112..312708f5 100644 --- a/src/core/Payments.sol +++ b/src/core/Payments.sol @@ -170,7 +170,12 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { } /// @notice Internal billing logic with TTL check - /// @dev Uses effective exposure (delegation × exposureBps) for proportional payment distribution + /// @dev Uses effective exposure (delegation × exposureBps) for proportional payment distribution. + /// F5: bills the TWAP-fair amount = `rate × cumDelta / (baseline × interval)` so an + /// operator cannot game the bill by ramping stake for a single instant of measurement + /// and then dumping it. cumDelta is the change in aggregate cumulative stake-seconds + /// over [lastBilledAt, now] across the service's active operators (bond asset). The + /// baseline is captured at the first bill and frozen for the life of the subscription. function _billSubscriptionInternal(uint64 serviceId) internal { Types.Service storage svc = _getService(serviceId); if (svc.status != Types.ServiceStatus.Active) { @@ -187,23 +192,26 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { Types.BlueprintConfig storage bpConfig = _blueprintConfigs[svc.blueprintId]; uint64 interval = bpConfig.subscriptionInterval; - uint256 rate = bpConfig.subscriptionRate; + uint256 nominalRate = bpConfig.subscriptionRate; if (block.timestamp < svc.lastPaymentAt + interval) { revert Errors.DeadlineExpired(); } + address[] memory operators = _activeServiceOperators(serviceId); + + // F5: derive the TWAP-fair amount for this period and reconcile billing cursors. + uint256 amount = _computeTwapBillAmount(serviceId, operators, nominalRate, interval); + PaymentLib.ServiceEscrow storage escrow = _serviceEscrows[serviceId]; - if (escrow.balance < rate) { - revert Errors.InsufficientEscrowBalance(rate, escrow.balance); + if (escrow.balance < amount) { + revert Errors.InsufficientEscrowBalance(amount, escrow.balance); } - address token = PaymentLib.releaseFromEscrow(escrow, rate); + address token = PaymentLib.releaseFromEscrow(escrow, amount); // Advance by exactly one interval so missed periods can be caught up over repeated calls. svc.lastPaymentAt += interval; - address[] memory operators = _activeServiceOperators(serviceId); - // Calculate effective exposures (with fallback to stored exposureBps) (uint256[] memory effectiveExposures, uint256 totalEffectiveExposure, bool hasSecurityCommitments) = _calculateEffectiveExposuresWithFallback(serviceId, operators); @@ -212,33 +220,35 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { serviceId, svc.blueprintId, token, - rate, + amount, operators, effectiveExposures, totalEffectiveExposure, hasSecurityCommitments ); - emit SubscriptionBilled(serviceId, rate, interval); + emit SubscriptionBilled(serviceId, amount, interval); } /// @notice Try to bill a subscription, returns false on failure instead of reverting - /// @dev Uses effective exposure (delegation × exposureBps) for proportional payment distribution + /// @dev Uses effective exposure (delegation × exposureBps) for proportional payment distribution. + /// F5: same TWAP-fair amount derivation as `_billSubscriptionInternal`. function _tryBillSubscription(uint64 serviceId) internal returns (bool) { if (!_isBillable(serviceId)) return false; Types.Service storage svc = _services[serviceId]; Types.BlueprintConfig storage bpConfig = _blueprintConfigs[svc.blueprintId]; - PaymentLib.ServiceEscrow storage escrow = _serviceEscrows[serviceId]; - uint256 rate = bpConfig.subscriptionRate; - if (escrow.balance < rate) return false; + address[] memory operators = _activeServiceOperators(serviceId); + uint64 interval = bpConfig.subscriptionInterval; + uint256 amount = _computeTwapBillAmount(serviceId, operators, bpConfig.subscriptionRate, interval); - address token = PaymentLib.releaseFromEscrow(escrow, rate); - // Advance by exactly one interval so missed periods can be caught up over repeated calls. - svc.lastPaymentAt += bpConfig.subscriptionInterval; + PaymentLib.ServiceEscrow storage escrow = _serviceEscrows[serviceId]; + if (escrow.balance < amount) return false; - address[] memory operators = _activeServiceOperators(serviceId); + address token = PaymentLib.releaseFromEscrow(escrow, amount); + // Advance by exactly one interval so missed periods can be caught up over repeated calls. + svc.lastPaymentAt += interval; // Calculate effective exposures (with fallback to stored exposureBps) (uint256[] memory effectiveExposures, uint256 totalEffectiveExposure, bool hasSecurityCommitments) = @@ -248,17 +258,128 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { serviceId, svc.blueprintId, token, - rate, + amount, operators, effectiveExposures, totalEffectiveExposure, hasSecurityCommitments ); - emit SubscriptionBilled(serviceId, rate, bpConfig.subscriptionInterval); + emit SubscriptionBilled(serviceId, amount, interval); return true; } + /// @notice F5: compute the TWAP-fair bill amount for ONE period and advance the cursor. + /// @dev Each call processes exactly one period of length `interval`, even when the + /// caller is late — `_billSubscriptionInternal` advances `lastPaymentAt += interval` + /// so missed periods are caught up over repeated calls. The cum-stake cursor must + /// mirror that semantic: we attribute only the portion of `cumDelta` that falls + /// inside `[lastPaymentAt, lastPaymentAt + interval]`, not the whole tail up to + /// `block.timestamp`. We don't snapshot historical cum, so for the late-bill tail + /// `[periodEnd, now]` we project linearly with the current stake (exact when the + /// stake is stable since `periodEnd`, conservative otherwise — and the same + /// forward-projected cum is moved into the cursor so the *next* bill picks up + /// from `periodEnd` without any double-counting). + /// + /// The first call lazy-initializes the per-service cursor and baseline from + /// live aggregate state; this matches the migration requirement (no coordinated + /// upgrade init for pre-existing subscriptions, and the same path for newly- + /// activated ones). The first post-init bill returns `nominalRate` exactly. + /// From the next call onward, `amount = nominalRate × cumDeltaPeriod / (baseline + /// × interval)` — periods with higher-than-baseline stake bill proportionally + /// more, lower stake bills less. + function _computeTwapBillAmount( + uint64 serviceId, + address[] memory operators, + uint256 nominalRate, + uint64 interval + ) + internal + returns (uint256 amount) + { + PaymentLib.ServiceEscrow storage escrow = _serviceEscrows[serviceId]; + + (uint256 currentCum, uint256 currentStake) = _aggregateBondStakeSnapshot(operators); + + // Forward-project cum to the end of the period being billed. `_billSubscriptionInternal` + // advances `svc.lastPaymentAt += interval` exactly once per call, so the bill window + // is always `[svc.lastPaymentAt, svc.lastPaymentAt + interval]`. When the caller is + // late (block.timestamp > periodEnd) we subtract `currentStake × tail` to estimate cum + // at the period boundary — exact when stake has been stable since `periodEnd`, and + // applied symmetrically to lazy-init below so the cursor never double-counts. + uint64 periodEnd = _services[serviceId].lastPaymentAt + interval; + uint256 cumAtPeriodEnd = currentCum; + if (block.timestamp > periodEnd) { + uint256 tail = currentStake * (block.timestamp - uint256(periodEnd)); + cumAtPeriodEnd = currentCum > tail ? currentCum - tail : 0; + } + + // Lazy-init: single sentinel `subscriptionBaselineStake == 0` covers both + // pre-upgrade subscriptions AND newly-activated ones. We choose lazy init over + // a one-shot upgrade function so live subscriptions don't require a coordinated + // migration; the first post-upgrade `billSubscription` call seeds both cursors + // from live state and bills the standard `nominalRate` for the first window. + // From the next call onward, billing is TWAP-correct. + if (escrow.subscriptionBaselineStake == 0) { + // Park the cursor at `cumAtPeriodEnd` — exactly where the NEXT bill expects + // to start. Earlier history (before lazy-init) is intentionally discarded + // since we cannot retro-attribute it to any particular billing window. + escrow.lastBilledCumStake = cumAtPeriodEnd; + // Pin the baseline. If everyone has zero stake at this moment we fall back + // to nominal billing (no fair-pricing signal); the bill remains `nominalRate` + // until stakes become observable. In practice a service activation requires + // staked operators, so this branch is unreachable outside artificial tests. + escrow.subscriptionBaselineStake = currentStake == 0 ? 1 : currentStake; + return nominalRate; + } + + uint256 cumDelta = cumAtPeriodEnd > escrow.lastBilledCumStake + ? cumAtPeriodEnd - escrow.lastBilledCumStake + : 0; + escrow.lastBilledCumStake = cumAtPeriodEnd; + + uint256 denom = escrow.subscriptionBaselineStake * uint256(interval); + if (denom == 0) { + // Defensive: should not occur after lazy-init, but if it ever did we degrade + // gracefully to nominal billing rather than reverting. + return nominalRate; + } + amount = (nominalRate * cumDelta) / denom; + } + + /// @notice Sum each operator's bond-asset cumulative stake-seconds and current stake. + /// @dev Aggregates only the active operators passed in (consistent with payout selection), + /// so an exited operator no longer contributes to billing weight even though their + /// historical cum is preserved on the staking side. + function _aggregateBondStakeSnapshot(address[] memory operators) + internal + view + returns (uint256 currentCum, uint256 currentStake) + { + IStaking staking = _getStaking(); + Types.Asset memory bondAsset = _bondAssetForBilling(); + uint256 operatorsLength = operators.length; + for (uint256 i = 0; i < operatorsLength;) { + (uint256 cum,, uint256 stake) = staking.getCumStakeSeconds(operators[i], bondAsset); + currentCum += cum; + currentStake += stake; + unchecked { + ++i; + } + } + } + + /// @notice Resolve the asset used for TWAP billing. + /// @dev Bond asset (TNT) when configured, otherwise native. Matches the asset that + /// `IStaking.getOperatorStake` aggregates over. + function _bondAssetForBilling() internal view returns (Types.Asset memory asset) { + address bond = _tntToken; + if (bond == address(0)) { + return Types.Asset({ kind: Types.AssetKind.Native, token: address(0) }); + } + return Types.Asset({ kind: Types.AssetKind.ERC20, token: bond }); + } + /// @notice Check if a service is billable function _isBillable(uint64 serviceId) internal view returns (bool) { Types.Service storage svc = _services[serviceId]; diff --git a/src/facets/staking/StakingViewsFacet.sol b/src/facets/staking/StakingViewsFacet.sol index eb26afdf..d5ac1eb2 100644 --- a/src/facets/staking/StakingViewsFacet.sol +++ b/src/facets/staking/StakingViewsFacet.sol @@ -10,7 +10,7 @@ import { IFacetSelectors } from "../../interfaces/IFacetSelectors.sol"; /// @notice Facet for staking view functions contract StakingViewsFacet is StakingFacetBase, IFacetSelectors { function selectors() external pure returns (bytes4[] memory selectorList) { - selectorList = new bytes4[](29); + selectorList = new bytes4[](30); selectorList[0] = this.isOperator.selector; selectorList[1] = this.isOperatorActive.selector; selectorList[2] = this.getOperatorStake.selector; @@ -40,6 +40,7 @@ contract StakingViewsFacet is StakingFacetBase, IFacetSelectors { selectorList[26] = this.serviceFeeDistributor.selector; selectorList[27] = this.operatorBondToken.selector; selectorList[28] = this.previewDelegatorUnstakeShares.selector; + selectorList[29] = this.getCumStakeSeconds.selector; } function isOperator(address operator) external view returns (bool) { @@ -209,4 +210,20 @@ contract StakingViewsFacet is StakingFacetBase, IFacetSelectors { function operatorBondToken() external view returns (address) { return _operatorBondToken; } + + /// @notice F5: Lazy-realized cumulative stake-seconds for (operator, asset) + /// @dev Used by `Payments.billSubscription` for TWAP-fair pricing. Read-only; + /// adds the unrealized tail `currentStake × (now − lastUpdate)` on the fly + /// so the snapshot is consistent at the read timestamp. + function getCumStakeSeconds( + address operator, + Types.Asset calldata asset + ) + external + view + returns (uint256 cum, uint64 lastUpdate, uint256 currentStake) + { + bytes32 assetHash = _assetHash(asset); + return _getCumStakeSecondsView(operator, assetHash); + } } diff --git a/src/interfaces/IStaking.sol b/src/interfaces/IStaking.sol index 8f9e86a5..a6d79438 100644 --- a/src/interfaces/IStaking.sol +++ b/src/interfaces/IStaking.sol @@ -193,6 +193,30 @@ interface IStaking { /// @param operator The operator to query /// @return count Number of pending slashes function getPendingSlashCount(address operator) external view returns (uint64); + + // ═══════════════════════════════════════════════════════════════════════════ + // F5: TWAP STAKE-SECONDS ACCUMULATOR + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Lazy-realized cumulative stake-seconds for an (operator, asset). + /// @dev Compound-v2 / Aave-v3 style index: every stake-changing path folds + /// `prevStake × (now − lastUpdate)` into the running counter, so callers + /// (notably subscription billing) can price an interval `[t0, t1]` as + /// `cum(t1) − cum(t0)` without iterating delegation events. The view + /// adds the unrealized tail `currentStake × (now − lastUpdate)` on the + /// fly so the read reflects the current block. + /// @param operator The operator to query + /// @param asset The asset to query + /// @return cum Cumulative stake-seconds at `block.timestamp` + /// @return lastUpdate Stored timestamp of the last on-chain accrual (0 if never) + /// @return currentStake The operator's current total stake for the asset + function getCumStakeSeconds( + address operator, + Types.Asset calldata asset + ) + external + view + returns (uint256 cum, uint64 lastUpdate, uint256 currentStake); } /// @title IStakingAdmin diff --git a/src/libraries/PaymentLib.sol b/src/libraries/PaymentLib.sol index ac23ad00..e9e0ffdc 100644 --- a/src/libraries/PaymentLib.sol +++ b/src/libraries/PaymentLib.sol @@ -86,11 +86,25 @@ library PaymentLib { } /// @notice Service escrow account (for subscriptions) + /// @dev F5 fields are appended at the end of the struct so existing storage + /// slots are preserved across upgrades. Because `_serviceEscrows` is a + /// mapping(uint64 => ServiceEscrow) (not nested in another struct), the + /// added fields claim previously-zero slots tied to each serviceId. struct ServiceEscrow { address token; // Payment token (address(0) = native) uint256 balance; // Current escrow balance uint256 totalDeposited; // Lifetime deposits uint256 totalReleased; // Lifetime releases + // F5: aggregated cumulative stake-seconds (sum across active operators + // for the bond asset) at the moment of the last subscription bill. + // Compared against the current aggregate to derive cumDelta for the + // window. Zero sentinel means "uninitialized" — the next bill seeds the + // cursor and bills the standard subscriptionRate (lazy migration). + uint256 lastBilledCumStake; + // F5: nominal aggregate stake used as the per-period denominator in the + // TWAP bill formula. Captured at the lazy-init bill, then frozen for the + // life of the subscription. Zero sentinel means "uninitialized". + uint256 subscriptionBaselineStake; } // ═══════════════════════════════════════════════════════════════════════════ diff --git a/src/staking/DelegationManagerLib.sol b/src/staking/DelegationManagerLib.sol index 1a916441..54f15c2f 100644 --- a/src/staking/DelegationManagerLib.sol +++ b/src/staking/DelegationManagerLib.sol @@ -628,24 +628,6 @@ abstract contract DelegationManagerLib is OperatorManager { } } - /// @notice Get operator's total delegated stake for a specific asset - function _getOperatorDelegatedStakeForAsset( - address operator, - bytes32 assetHash - ) - internal - view - returns (uint256 total) - { - total += _rewardPools[operator][assetHash].totalAssets; - - uint256 bpCount = _operatorBlueprints[operator].length(); - for (uint256 i = 0; i < bpCount; i++) { - uint64 blueprintId = uint64(_operatorBlueprints[operator].at(i)); - total += _blueprintPools[operator][blueprintId][assetHash].totalAssets; - } - } - /// @notice Get operator's total stake for the bond asset (self + delegated) function _getOperatorTotalStake(address operator) internal view returns (uint256) { bytes32 bondHash = _operatorBondToken == address(0) diff --git a/src/staking/DelegationStorage.sol b/src/staking/DelegationStorage.sol index 732409a8..14f83c09 100644 --- a/src/staking/DelegationStorage.sol +++ b/src/staking/DelegationStorage.sol @@ -305,6 +305,112 @@ abstract contract DelegationStorage { return (originalAmount * currentFactor) / snapshotFactor; } + // ═══════════════════════════════════════════════════════════════════════════ + // F5: TWAP STAKE-SECONDS ACCRUAL + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Operator's total delegated stake for a specific asset (sum across + /// All-mode pool and every Fixed-mode blueprint pool the operator owns). + /// @dev Defined here (not in DelegationManagerLib) so OperatorManager can also + /// compute total stake-for-asset when its self-stake mutations need to + /// accrue stake-seconds. All inputs live in DelegationStorage. + function _getOperatorDelegatedStakeForAsset( + address operator, + bytes32 assetHash + ) + internal + view + returns (uint256 total) + { + total += _rewardPools[operator][assetHash].totalAssets; + + uint256 bpCount = _operatorBlueprints[operator].length(); + for (uint256 i = 0; i < bpCount; i++) { + uint64 blueprintId = uint64(_operatorBlueprints[operator].at(i)); + total += _blueprintPools[operator][blueprintId][assetHash].totalAssets; + } + } + + /// @notice Operator's total stake for an asset (self-stake when bond + delegated). + /// @dev Single source of truth so the TWAP accrual hook always agrees with the + /// value used for billing, slashing, and view facets. For non-bond assets + /// self-stake contributes zero. + function _getOperatorStakeForAssetHash( + address operator, + bytes32 assetHash + ) + internal + view + returns (uint256) + { + uint256 delegated = _getOperatorDelegatedStakeForAsset(operator, assetHash); + bytes32 bondHash = _operatorBondToken == address(0) + ? _assetHash(Types.Asset(Types.AssetKind.Native, address(0))) + : _assetHash(Types.Asset(Types.AssetKind.ERC20, _operatorBondToken)); + if (assetHash == bondHash) { + // forge-lint: disable-next-line(unsafe-typecast) + return delegated + _operatorMetadata[operator].stake; + } + return delegated; + } + + /// @notice Fold elapsed time × current stake into the cumulative counter. + /// @dev Caller passes the operator's CURRENT stake for the asset (i.e. the value + /// that has been in effect since `_cumStakeSecondsLastUpdate`). Must be + /// called BEFORE the underlying stake actually changes, otherwise the + /// pre-change interval would be priced at the new (post-change) stake. + /// First accrual seeds `lastUpdate` without area contribution, so any + /// pre-existing pool starts TWAP cleanly at upgrade time without + /// back-paying for unobservable history. + function _accrueStakeSecondsRaw(address operator, bytes32 assetHash, uint256 currentStake) internal { + uint64 last = _cumStakeSecondsLastUpdate[operator][assetHash]; + uint64 nowTs = uint64(block.timestamp); + if (last == 0) { + _cumStakeSecondsLastUpdate[operator][assetHash] = nowTs; + return; + } + if (nowTs <= last) return; // same-block or clock skew: no-op + unchecked { + // safe: (nowTs - last) ≤ 2^64; currentStake ≤ 2^256; product fits + // because product ≤ 2^256 by construction of realistic stakes. + _cumStakeSeconds[operator][assetHash] += currentStake * (nowTs - last); + } + _cumStakeSecondsLastUpdate[operator][assetHash] = nowTs; + } + + /// @notice Fold pre-change stake-seconds into the cumulative index. + /// @dev MUST be invoked BEFORE every state change that mutates the operator's + /// total stake for the given asset. Reads the current stake (the value + /// that was in effect over [lastUpdate, now]) and pushes the area into + /// `_cumStakeSeconds`. Idempotent within a single block. + function _accrueOperatorStakeSeconds(address operator, bytes32 assetHash) internal { + uint256 currentStake = _getOperatorStakeForAssetHash(operator, assetHash); + _accrueStakeSecondsRaw(operator, assetHash, currentStake); + } + + /// @notice Lazy-realize cumulative stake-seconds at the current block. + /// @dev Does not write storage. Returns the snapshotted counter the caller would + /// see if accrual ran right now, plus the stored `lastUpdate` and live + /// stake for caller-side bookkeeping (e.g. lazy-initializing a + /// subscription's last-billed cursor). + function _getCumStakeSecondsView( + address operator, + bytes32 assetHash + ) + internal + view + returns (uint256 cum, uint64 lastUpdate, uint256 currentStake) + { + cum = _cumStakeSeconds[operator][assetHash]; + lastUpdate = _cumStakeSecondsLastUpdate[operator][assetHash]; + currentStake = _getOperatorStakeForAssetHash(operator, assetHash); + if (lastUpdate != 0 && block.timestamp > lastUpdate) { + unchecked { + cum += currentStake * (uint64(block.timestamp) - lastUpdate); + } + } + } + // ═══════════════════════════════════════════════════════════════════════════ // ROUTER SELECTOR REGISTRY // ═══════════════════════════════════════════════════════════════════════════ @@ -342,7 +448,28 @@ abstract contract DelegationStorage { /// @notice Whitelist of approved delegators: operator => delegator => approved mapping(address => mapping(address => bool)) internal _operatorDelegationWhitelist; + // ═══════════════════════════════════════════════════════════════════════════ + // F5: TWAP-FAIR STAKE INDEX (cumulative stake-seconds per operator+asset) + // ═══════════════════════════════════════════════════════════════════════════ + // Compound-v2 / Aave-v3 style index: every stake-changing path calls + // `_accrueOperatorStakeSeconds(op, assetHash)` BEFORE mutating the underlying + // amount, which folds `prevStake × (now − lastUpdate)` into the running counter. + // Subscription billing then prices a period by `cum_now − cum_lastBilled`, + // making TWAP-fair pricing O(1) per change with no looping. Counter is + // monotonic and never decreases (slashes still attribute time-weight up to the + // slash instant). uint256 stake-seconds cannot overflow at realistic scales + // (e.g. 1e30 wei × 100 years ≈ 3.15e39 < 2^256). + + /// @notice Cumulative stake-seconds: operator => assetHash => Σ stake(t)·dt + mapping(address => mapping(bytes32 => uint256)) internal _cumStakeSeconds; + + /// @notice Timestamp of the last accrual into _cumStakeSeconds for this pair. + /// @dev 0 sentinel means "never accrued"; the first accrual seeds lastUpdate + /// without contributing area, so pre-existing pools begin TWAP at upgrade. + mapping(address => mapping(bytes32 => uint64)) internal _cumStakeSecondsLastUpdate; + /// @notice Reserved storage gap for future upgrades /// @dev Standard gap size is 50 slots. When adding new storage, decrease this gap accordingly. - uint256[46] private __gap; + /// @dev F5 added 2 mappings; gap reduced by 2 (46 → 44). + uint256[44] private __gap; } diff --git a/src/staking/OperatorManager.sol b/src/staking/OperatorManager.sol index 5eeb703b..79c4671c 100644 --- a/src/staking/OperatorManager.sol +++ b/src/staking/OperatorManager.sol @@ -54,6 +54,10 @@ abstract contract OperatorManager is DelegationStorage { revert DelegationErrors.InsufficientStake(config.minOperatorStake, msg.value); } + // F5: seed TWAP cursor at registration. Pre-stake is 0, so this only + // initializes lastUpdate without any area contribution. + _accrueStakeSecondsRaw(msg.sender, nativeHash, 0); + _operators.add(msg.sender); _operatorMetadata[msg.sender] = Types.OperatorMetadata({ stake: msg.value, delegationCount: 0, status: Types.OperatorStatus.Active, leavingRound: 0 @@ -84,6 +88,10 @@ abstract contract OperatorManager is DelegationStorage { IERC20(token).safeTransferFrom(msg.sender, address(this), amount); + // F5: seed TWAP cursor at registration. Pre-stake is 0, so this only + // initializes lastUpdate without any area contribution. + _accrueStakeSecondsRaw(msg.sender, assetHash, 0); + _operators.add(msg.sender); _operatorMetadata[msg.sender] = Types.OperatorMetadata({ stake: amount, delegationCount: 0, status: Types.OperatorStatus.Active, leavingRound: 0 @@ -107,6 +115,10 @@ abstract contract OperatorManager is DelegationStorage { } if (msg.value == 0) revert DelegationErrors.ZeroAmount(); + // F5: accrue stake-seconds at the pre-change stake before mutating self-stake. + bytes32 nativeHash = _assetHash(Types.Asset(Types.AssetKind.Native, address(0))); + _accrueOperatorStakeSeconds(msg.sender, nativeHash); + meta.stake += msg.value; emit OperatorStakeIncreased(msg.sender, msg.value); } @@ -123,6 +135,11 @@ abstract contract OperatorManager is DelegationStorage { if (amount == 0) revert DelegationErrors.ZeroAmount(); IERC20(token).safeTransferFrom(msg.sender, address(this), amount); + + // F5: accrue stake-seconds before mutating self-stake. + bytes32 bondHash = _assetHash(Types.Asset(Types.AssetKind.ERC20, token)); + _accrueOperatorStakeSeconds(msg.sender, bondHash); + meta.stake += amount; emit OperatorStakeIncreased(msg.sender, amount); } @@ -166,6 +183,12 @@ abstract contract OperatorManager is DelegationStorage { revert DelegationErrors.LeavingTooEarly(currentRound, request.requestedRound + delegationBondLessDelay); } + // F5: accrue stake-seconds at the pre-unstake stake before mutating self-stake. + bytes32 bondHashUnstake = _operatorBondToken == address(0) + ? _assetHash(Types.Asset(Types.AssetKind.Native, address(0))) + : _assetHash(Types.Asset(Types.AssetKind.ERC20, _operatorBondToken)); + _accrueOperatorStakeSeconds(msg.sender, bondHashUnstake); + unstaked = request.amount; _operatorMetadata[msg.sender].stake -= unstaked; @@ -235,6 +258,12 @@ abstract contract OperatorManager is DelegationStorage { revert DelegationErrors.LeavingTooEarly(currentRound, meta.leavingRound + leaveOperatorsDelay); } + // F5: accrue stake-seconds at the pre-exit stake before zeroing self-stake. + bytes32 bondHashExit = _operatorBondToken == address(0) + ? _assetHash(Types.Asset(Types.AssetKind.Native, address(0))) + : _assetHash(Types.Asset(Types.AssetKind.ERC20, _operatorBondToken)); + _accrueOperatorStakeSeconds(msg.sender, bondHashExit); + stake = meta.stake; meta.stake = 0; meta.status = Types.OperatorStatus.Inactive; diff --git a/src/staking/RewardsManager.sol b/src/staking/RewardsManager.sol index 66c19546..f129fcfc 100644 --- a/src/staking/RewardsManager.sol +++ b/src/staking/RewardsManager.sol @@ -54,6 +54,10 @@ abstract contract RewardsManager is DelegationManagerLib { override { bytes32 assetHash = _assetHash(asset); + // F5: fold pre-change stake-seconds into the TWAP index BEFORE any pool + // mutation so the elapsed period is priced at the stake that was actually + // in effect (not the post-delegate value). + _accrueOperatorStakeSeconds(operator, assetHash); uint256[] memory blueprintAmounts = new uint256[](0); if (selectionMode == Types.BlueprintSelectionMode.All) { // All mode: use the operator's main pool (exposed to ALL blueprints) diff --git a/src/staking/SlashingManager.sol b/src/staking/SlashingManager.sol index 342f4ef3..76d9988a 100644 --- a/src/staking/SlashingManager.sol +++ b/src/staking/SlashingManager.sol @@ -333,6 +333,8 @@ abstract contract SlashingManager is RewardsManager { Types.Asset memory asset = Types.Asset(Types.AssetKind.Native, address(0)); bytes32 assetHash = _assetHash(asset); + // F5: accrue stake-seconds at the pre-slash stake before mutating pools/self-stake. + _accrueOperatorStakeSeconds(operator, assetHash); uint256 exchangeRateBefore = _getExchangeRate(operator, assetHash); (NativeSlashOutcome memory outcome, uint64[] memory callbackBlueprintIds) = _applyNativeSlash(operator, assetHash, slashBps); @@ -546,6 +548,10 @@ abstract contract SlashingManager is RewardsManager { returns (uint256 assetSlashed) { bytes32 assetHash = _assetHash(asset); + // F5: accrue stake-seconds at the pre-slash stake. Until this instant, the + // higher pre-slash stake was actually backing the service, and billing + // must price the elapsed window at that stake (not the post-slash one). + _accrueOperatorStakeSeconds(operator, assetHash); uint256 exchangeRateBefore = _getExchangeRate(operator, assetHash); AssetSlashOutcome memory outcome = _applyAssetSlash(operator, blueprintId, assetHash, slashBps); assetSlashed = outcome.operatorSlashed + outcome.allModeSlashed + outcome.fixedModeSlashed; diff --git a/test/beacon/CrossChainSlashingTest.t.sol b/test/beacon/CrossChainSlashingTest.t.sol index d9bfe760..aaa90a6a 100644 --- a/test/beacon/CrossChainSlashingTest.t.sol +++ b/test/beacon/CrossChainSlashingTest.t.sol @@ -232,6 +232,19 @@ contract MockStaking is IStaking { function getPendingSlashCount(address) external pure override returns (uint64) { return 0; } + + // F5: TWAP stake-seconds (mock returns zero — irrelevant to slashing tests) + function getCumStakeSeconds( + address, + Types.Asset calldata + ) + external + pure + override + returns (uint256, uint64, uint256) + { + return (0, 0, 0); + } } contract MockSlashPod { diff --git a/test/scripts/DeploymentScriptsTest.t.sol b/test/scripts/DeploymentScriptsTest.t.sol index 8e071f09..c996aea0 100644 --- a/test/scripts/DeploymentScriptsTest.t.sol +++ b/test/scripts/DeploymentScriptsTest.t.sol @@ -121,6 +121,19 @@ contract MockStaking is IStaking { function getPendingSlashCount(address) external pure override returns (uint64) { return 0; } + + // F5: TWAP stake-seconds (deployment-script mock — zeros suffice) + function getCumStakeSeconds( + address, + Types.Asset calldata + ) + external + pure + override + returns (uint256, uint64, uint256) + { + return (0, 0, 0); + } } contract DeployV2Harness is DeployV2 { diff --git a/test/security/F5TWAPBilling.t.sol b/test/security/F5TWAPBilling.t.sol new file mode 100644 index 00000000..bd5477f6 --- /dev/null +++ b/test/security/F5TWAPBilling.t.sol @@ -0,0 +1,236 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import { BaseTest } from "../BaseTest.sol"; +import { Types } from "../../src/libraries/Types.sol"; +import { PaymentLib } from "../../src/libraries/PaymentLib.sol"; + +/// @title F5TWAPBillingTest +/// @notice Round 4 audit fix F5: subscription billing must price the period by +/// the time-weighted average stake, not the stake at the bill instant. +/// These tests cover the four behavioral guarantees called out in the +/// audit + the lazy-init path for pre-upgrade subscriptions. +contract F5TWAPBillingTest is BaseTest { + uint256 internal constant SUB_RATE = 1 ether; + uint64 internal constant SUB_INTERVAL = 30 days; + + uint256 internal constant BASE_OP_STAKE = 5 ether; + uint256 internal constant DELEGATOR_BASELINE = 10 ether; + + uint64 internal blueprintId; + uint64 internal serviceId; + address internal slasher = makeAddr("f5_slasher"); + + function setUp() public override { + super.setUp(); + // Authorize a dedicated slasher EOA so the slash test can call staking.slash + // directly instead of going through Tangle's full proposal/execute flow. + vm.prank(admin); + staking.addSlasher(slasher); + } + + // ───────────────────────────────────────────────────────────────────────── + // Helpers + // ───────────────────────────────────────────────────────────────────────── + + function _setUpSubscription() internal { + Types.BlueprintConfig memory config = Types.BlueprintConfig({ + membership: Types.MembershipModel.Fixed, + pricing: Types.PricingModel.Subscription, + minOperators: 1, + maxOperators: 5, + subscriptionRate: SUB_RATE, + subscriptionInterval: SUB_INTERVAL, + eventRate: 0 + }); + + vm.prank(developer); + blueprintId = _createBlueprintWithConfigAsSender("ipfs://f5-subscription", address(0), config); + + // Operator 1: registers + delegator stakes baseline. + vm.prank(operator1); + staking.registerOperator{ value: BASE_OP_STAKE }(); + vm.prank(operator1); + staking.setDelegationMode(Types.DelegationMode.Open); + _directRegisterOperator(operator1, blueprintId, ""); + + vm.startPrank(delegator1); + staking.deposit{ value: DELEGATOR_BASELINE }(); + staking.delegate(operator1, DELEGATOR_BASELINE); + vm.stopPrank(); + + uint256 escrow = SUB_RATE * 12; // plenty for any TWAP scaling + address[] memory operators = new address[](1); + operators[0] = operator1; + address[] memory callers = new address[](0); + + vm.deal(address(tangle), 100 ether); + + vm.prank(user1); + uint64 requestId = tangle.requestService{ value: escrow }( + blueprintId, operators, "", callers, 0, address(0), escrow, Types.ConfidentialityPolicy.Any + ); + + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + + serviceId = 0; + assertTrue(tangle.isServiceActive(serviceId), "service active"); + } + + function _escrow() internal view returns (PaymentLib.ServiceEscrow memory) { + return tangle.getServiceEscrow(serviceId); + } + + /// @dev Compute the bill amount the protocol charged in the most recent call by + /// taking `totalReleased(after) − totalReleased(before)`. + function _billOnceAndMeasure() internal returns (uint256 charged) { + uint256 releasedBefore = _escrow().totalReleased; + tangle.billSubscription(serviceId); + charged = _escrow().totalReleased - releasedBefore; + } + + // ───────────────────────────────────────────────────────────────────────── + // Tests + // ───────────────────────────────────────────────────────────────────────── + + /// @notice Regression: constant stake throughout the period bills exactly subscriptionRate. + function test_F5_ConstantStake_BillsNominalRate() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + _setUpSubscription(); + + // Bill #1 (lazy-init period): bills nominal rate. + vm.warp(t0 + SUB_INTERVAL); + uint256 charged1 = _billOnceAndMeasure(); + assertEq(charged1, SUB_RATE, "first bill is nominal (lazy-init)"); + + // Bill #2: stake is constant — TWAP ratio == 1, bill stays nominal. + vm.warp(t0 + 2 * SUB_INTERVAL); + uint256 charged2 = _billOnceAndMeasure(); + assertApproxEqAbs(charged2, SUB_RATE, 1, "constant-stake TWAP equals nominal"); + } + + /// @notice Doubling stake mid-period bills ~1.5× nominal. + /// @dev Operator (delegator2) doubles total stake half-way through the second + /// window — TWAP avg over the window is 1.5× the start stake. + function test_F5_DoubledMidPeriod_BillsOneAndAHalf() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + _setUpSubscription(); + + // Lazy-init bill at the start of period 1 → period 2. + vm.warp(t0 + SUB_INTERVAL); + _billOnceAndMeasure(); + + // Halfway through window [t0 + 1*INT, t0 + 2*INT], double the operator's stake + // by adding an equal-sized delegation. Pre-double aggregate = BASE + DELEGATOR; + // post-double = 2 × pre-double. + vm.warp(t0 + SUB_INTERVAL + SUB_INTERVAL / 2); + uint256 doubleAmount = BASE_OP_STAKE + DELEGATOR_BASELINE; + vm.deal(delegator2, doubleAmount + 1 ether); + vm.startPrank(delegator2); + staking.deposit{ value: doubleAmount }(); + staking.delegate(operator1, doubleAmount); + vm.stopPrank(); + + // End of period 2: avg-stake = 1.5 × baseline → bill ≈ 1.5 × SUB_RATE. + vm.warp(t0 + 2 * SUB_INTERVAL); + uint256 charged = _billOnceAndMeasure(); + + // 1.5x with small slack for integer division and the lazy-init seeding moment. + uint256 lower = (SUB_RATE * 145) / 100; + uint256 upper = (SUB_RATE * 155) / 100; + assertGt(charged, lower, "TWAP doubled-stake bill below 1.45x"); + assertLt(charged, upper, "TWAP doubled-stake bill above 1.55x"); + } + + /// @notice Halving stake mid-period bills ~0.75× nominal. + /// @dev Uses a 50% slash as the stake-reduction primitive (functionally equivalent to + /// undelegate-and-execute for our purposes: it deterministically cuts aggregate + /// stake to ~50% at a single timestamp). Distinct from the slash-correctness test + /// below in that the *baseline stake* here is at parity with no extra delegators. + function test_F5_HalvedMidPeriod_BillsThreeQuarters() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + _setUpSubscription(); + + // Lazy-init bill at the end of period 1. + vm.warp(t0 + SUB_INTERVAL); + _billOnceAndMeasure(); + + // Halfway through period 2, halve aggregate stake via a 50% slash. The TWAP + // average over the window is 0.5 × (1.0 + 0.5) = 0.75 × the baseline. + vm.warp(t0 + SUB_INTERVAL + SUB_INTERVAL / 2); + vm.prank(slasher); + staking.slash(operator1, serviceId, 5000, bytes32(uint256(0xdeed))); + + // End of period 2. + vm.warp(t0 + 2 * SUB_INTERVAL); + uint256 charged = _billOnceAndMeasure(); + + // ~0.75× nominal. Slack covers rounding from the share-pool exchange-rate + // arithmetic. + uint256 lower = (SUB_RATE * 70) / 100; + uint256 upper = (SUB_RATE * 80) / 100; + assertGt(charged, lower, "TWAP halved-stake bill below 0.7x"); + assertLt(charged, upper, "TWAP halved-stake bill above 0.8x"); + } + + /// @notice Slashing reduces stake from the slash instant; subsequent billing weights + /// only the remaining stake going forward. + function test_F5_MidPeriodSlash_BillsByPostSlashStake() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + _setUpSubscription(); + + // Lazy-init at end of period 1. + vm.warp(t0 + SUB_INTERVAL); + _billOnceAndMeasure(); + + // Halfway through period 2: slash the operator 50%. Total stake drops to ~50% + // for the remaining half of the window → avg = 0.75× of pre-slash. + vm.warp(t0 + SUB_INTERVAL + SUB_INTERVAL / 2); + vm.prank(slasher); + staking.slash(operator1, serviceId, 5000, bytes32(uint256(0xb1ade))); + + vm.warp(t0 + 2 * SUB_INTERVAL); + uint256 charged = _billOnceAndMeasure(); + + // ~0.75× nominal: the integral over [start, slash] at 1× plus [slash, end] at 0.5× + // divided by baseline×interval = 0.75. + uint256 lower = (SUB_RATE * 70) / 100; + uint256 upper = (SUB_RATE * 80) / 100; + assertGt(charged, lower, "post-slash TWAP bill below 0.7x"); + assertLt(charged, upper, "post-slash TWAP bill above 0.8x"); + } + + /// @notice First post-upgrade bill lazy-initializes the cursor and bills the + /// standard nominal rate (does not retro-bill any pre-upgrade history). + function test_F5_LazyInit_FirstPostUpgradeBill_NominalAndForwardOnly() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + _setUpSubscription(); + + // Simulate "pre-upgrade lifetime" by warping a long way past createdAt + // BEFORE the first bill. The lazy-init must not retro-charge for that + // unobservable history — it should bill exactly SUB_RATE for the first + // window and seed cursors at the live aggregate. + vm.warp(t0 + SUB_INTERVAL * 5); // 5 intervals of pretend-history + + // First-ever bill: lazy-init path. Seeds cursor and bills nominal. + uint256 charged1 = _billOnceAndMeasure(); + assertEq(charged1, SUB_RATE, "first post-upgrade bill is nominal"); + + // After lazy-init, escrow.subscriptionBaselineStake and lastBilledCumStake + // are populated; subsequent bills are TWAP-correct against that baseline. + PaymentLib.ServiceEscrow memory esc = _escrow(); + assertGt(esc.subscriptionBaselineStake, 0, "baseline seeded"); + assertGt(esc.lastBilledCumStake, 0, "cum cursor seeded"); + + // Advance one more interval at constant stake → TWAP ratio == 1 → bill == nominal. + vm.warp(block.timestamp + SUB_INTERVAL); + uint256 charged2 = _billOnceAndMeasure(); + assertApproxEqAbs(charged2, SUB_RATE, 1, "post-init constant-stake bill == nominal"); + } +} From cd4a13f41636f320c5a8b92476b7c51542ead2ac Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sun, 10 May 2026 10:35:55 -0600 Subject: [PATCH 4/5] chore(bindings): regenerate for Round 4 (v0.15.0) - Expose F5 `getCumStakeSeconds(operator, asset)` via the `IMultiAssetDelegation` interface so Rust callers can read TWAP stake-seconds without resorting to manual selector encoding. Mirrors how `getOperatorStakeForAsset` is exposed. - Regenerate ABIs and Alloy bindings against the consolidated tip (C-3 UUPS receivers + G-02 share-pool VPM + F5 TWAP billing). --- bindings/TNT_CORE_VERSION | 2 +- bindings/abi/IBlueprintServiceManager.json | 2 +- bindings/abi/IMultiAssetDelegation.json | 2 +- bindings/abi/ITangle.json | 2 +- bindings/abi/ITangleFull.json | 2 +- bindings/abi/ITangleSlashing.json | 2 +- bindings/abi/MultiAssetDelegation.json | 2 +- bindings/abi/OperatorStatusRegistry.json | 2 +- .../src/bindings/i_multi_asset_delegation.rs | 298 +++++++++++++++++- bindings/src/bindings/i_tangle.rs | 79 ++++- bindings/src/bindings/i_tangle_full.rs | 79 ++++- bindings/src/bindings/i_tangle_services.rs | 79 ++++- src/interfaces/IMultiAssetDelegation.sol | 9 + 13 files changed, 539 insertions(+), 21 deletions(-) diff --git a/bindings/TNT_CORE_VERSION b/bindings/TNT_CORE_VERSION index 89003ee8..05a85599 100644 --- a/bindings/TNT_CORE_VERSION +++ b/bindings/TNT_CORE_VERSION @@ -1 +1 @@ -98a5484534148b6b556085cf450ac5abb5e0d6b5 \ No newline at end of file +1eec313b3ce1641c5ccf00e9c5079a85e28f548c \ No newline at end of file diff --git a/bindings/abi/IBlueprintServiceManager.json b/bindings/abi/IBlueprintServiceManager.json index 73a32e9f..cc23608c 100644 --- a/bindings/abi/IBlueprintServiceManager.json +++ b/bindings/abi/IBlueprintServiceManager.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"canJoin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canLeave","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"forceRemoveAllowsBelowMin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ok","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAggregationThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"thresholdBps","type":"uint16","internalType":"uint16"},{"name":"thresholdType","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatInterval","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"interval","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"threshold","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getMinOperatorStake","inputs":[],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNonPaymentTerminationPolicy","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"graceIntervals","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRequiredResultCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getSlashingWindow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"window","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"onAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onApprove","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"stakingPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onBlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"tangleCore","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitCanceled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitScheduled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onJobResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"outputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onOperatorJoined","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorLeft","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRegister","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onReject","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"requestInputs","type":"bytes","internalType":"bytes"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentAsset","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onServiceInitialized","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onServiceTermination","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnappliedSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnregister","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUpdatePreferences","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"newPreferences","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryDeveloperPaymentAddress","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"developerPaymentAddress","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"queryDisputeOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"disputeOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queryIsPaymentAssetAllowed","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"isAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"querySlashingOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"slashingOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requiresAggregation","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canJoin(uint64,address)":"b47242e8","canLeave(uint64,address)":"e518de76","forceRemoveAllowsBelowMin(uint64)":"f3e28f32","getAggregationThreshold(uint64,uint8)":"25fcc64e","getExitConfig(uint64)":"d2672ed4","getHeartbeatInterval(uint64)":"0068080b","getHeartbeatThreshold(uint64)":"92cbb78e","getMinOperatorStake()":"54dce6c2","getNonPaymentTerminationPolicy(uint64)":"71e8e85d","getRequiredResultCount(uint64,uint8)":"4c443e04","getSlashingWindow(uint64)":"3fdadfcc","onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":"158bb2eb","onApprove(address,uint64,uint8)":"b159eb34","onBlueprintCreated(uint64,address,address)":"0b6535d7","onExitCanceled(uint64,address)":"5440662c","onExitScheduled(uint64,address,uint64)":"e0559c63","onJobCall(uint64,uint8,uint64,bytes)":"9838caa3","onJobResult(uint64,uint8,uint64,address,bytes,bytes)":"c40c80d1","onOperatorJoined(uint64,address,uint16)":"9aa26a92","onOperatorLeft(uint64,address)":"965d231b","onRegister(address,bytes)":"67793cc6","onReject(address,uint64)":"c9cd4a18","onRequest(uint64,address,address[],bytes,uint64,address,uint256)":"c28cd812","onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":"82a1ece4","onServiceTermination(uint64,address)":"a24e8a90","onSlash(uint64,bytes,uint8)":"7e14b919","onUnappliedSlash(uint64,bytes,uint8)":"0881898f","onUnregister(address)":"151a4576","onUpdatePreferences(address,bytes)":"f58e2066","queryDeveloperPaymentAddress(uint64)":"08179f35","queryDisputeOrigin(uint64)":"14b4df4c","queryIsPaymentAssetAllowed(uint64,address)":"e390fcdb","querySlashingOrigin(uint64)":"74ceeb55","requiresAggregation(uint64,uint8)":"19ed5bb2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canLeave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"forceRemoveAllowsBelowMin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getAggregationThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"thresholdBps\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"thresholdType\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatInterval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatThreshold\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinOperatorStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getNonPaymentTerminationPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"graceIntervals\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getRequiredResultCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"required\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashingWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"window\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"onAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"stakingPercent\",\"type\":\"uint8\"}],\"name\":\"onApprove\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tangleCore\",\"type\":\"address\"}],\"name\":\"onBlueprintCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onExitCanceled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"onExitScheduled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"onJobCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputs\",\"type\":\"bytes\"}],\"name\":\"onJobResult\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"onOperatorJoined\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"onRegister\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"onReject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"requestInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"name\":\"onRequest\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"onServiceInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onServiceTermination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onUnappliedSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onUnregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newPreferences\",\"type\":\"bytes\"}],\"name\":\"onUpdatePreferences\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDeveloperPaymentAddress\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"developerPaymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDisputeOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"disputeOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"queryIsPaymentAssetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"querySlashingOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"slashingOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"requiresAggregation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Blueprint developers implement this to customize all aspects of their blueprint. This is the primary integration point for blueprint developers - implement the hooks you need and leave others as default (via BlueprintServiceManagerBase). The lifecycle flow: 1. Blueprint created \\u2192 onBlueprintCreated 2. Operators register \\u2192 onRegister 3. Service requested \\u2192 onRequest 4. Operators approve \\u2192 onApprove 5. Service activated \\u2192 onServiceInitialized 6. Jobs submitted \\u2192 onJobCall 7. Results submitted \\u2192 onJobResult 8. Service terminated \\u2192 onServiceTermination\",\"kind\":\"dev\",\"methods\":{\"canJoin(uint64,address)\":{\"details\":\"Called before operator joins - return false to reject\",\"params\":{\"operator\":\"The operator wanting to join\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can join\"}},\"canLeave(uint64,address)\":{\"details\":\"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.\",\"params\":{\"operator\":\"The operator wanting to leave\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can leave\"}},\"forceRemoveAllowsBelowMin(uint64)\":{\"details\":\"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"ok\":\"True to allow eviction below the minimum operator count\"}},\"getAggregationThreshold(uint64,uint8)\":{\"details\":\"Only relevant if requiresAggregation returns true\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"thresholdBps\":\"Threshold in basis points (6700 = 67%)\",\"thresholdType\":\"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)\"}},\"getExitConfig(uint64)\":{\"details\":\"Defines minimum commitment and exit queue timing\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"exitQueueDuration\":\"Time between scheduling exit and completing it (seconds)\",\"forceExitAllowed\":\"Whether service owner can force-exit operators\",\"minCommitmentDuration\":\"Minimum time operator must stay after joining (seconds)\",\"useDefault\":\"True to use protocol default\"}},\"getHeartbeatInterval(uint64)\":{\"details\":\"Operators must submit heartbeats within this interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"interval\":\"Heartbeat interval in blocks (0 = disabled)\",\"useDefault\":\"True to use protocol default, false to use custom value\"}},\"getHeartbeatThreshold(uint64)\":{\"details\":\"Percentage of operators that must respond within interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"threshold\":\"Threshold percentage (0-100)\",\"useDefault\":\"True to use protocol default\"}},\"getMinOperatorStake()\":{\"details\":\"Called during operator registration to validate stake requirements\",\"returns\":{\"minStake\":\"Custom minimum stake amount (only used if useDefault=false)\",\"useDefault\":\"True to use protocol default from staking module\"}},\"getNonPaymentTerminationPolicy(uint64)\":{\"details\":\"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"graceIntervals\":\"Additional full intervals to wait after first missed payment\",\"useDefault\":\"True to use protocol default\"}},\"getRequiredResultCount(uint64,uint8)\":{\"details\":\"Override for consensus requirements (e.g., 2/3 majority)\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"Number of results needed (0 = service operator count)\"}},\"getSlashingWindow(uint64)\":{\"details\":\"Time window for disputes before slash is finalized\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"useDefault\":\"True to use protocol default\",\"window\":\"Slashing window in blocks\"}},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Validate the aggregated result, verify BLS signature, check threshold\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key of signers (G2 point)\",\"aggregatedSignature\":\"The aggregated BLS signature (G1 point x, y)\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"output\":\"The aggregated output\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap of which operators signed\"}},\"onApprove(address,uint64,uint8)\":{\"params\":{\"operator\":\"The approving operator\",\"requestId\":\"The request ID\",\"stakingPercent\":\"Percentage of stake committed to this service (0-100)\"}},\"onBlueprintCreated(uint64,address,address)\":{\"details\":\"Store the blueprintId and tangleCore address for future reference\",\"params\":{\"blueprintId\":\"The new blueprint ID\",\"owner\":\"The blueprint owner\",\"tangleCore\":\"The address of the Tangle core contract\"}},\"onExitCanceled(uint64,address)\":{\"params\":{\"operator\":\"The operator canceling exit\",\"serviceId\":\"The service ID\"}},\"onExitScheduled(uint64,address,uint64)\":{\"details\":\"Allows manager to track pending exits, notify other parties, etc.\",\"params\":{\"executeAfter\":\"Timestamp when exit can be executed\",\"operator\":\"The operator scheduling exit\",\"serviceId\":\"The service ID\"}},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"details\":\"Validate job inputs, check caller permissions, etc.\",\"params\":{\"inputs\":\"Job inputs (blueprint-specific encoding)\",\"job\":\"The job index in the blueprint\",\"jobCallId\":\"Unique ID for this job call\",\"serviceId\":\"The service ID\"}},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"details\":\"Validate result format, check operator eligibility, aggregate results\",\"params\":{\"inputs\":\"Original job inputs\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"operator\":\"The operator submitting\",\"outputs\":\"Result outputs (blueprint-specific encoding)\",\"serviceId\":\"The service ID\"}},\"onOperatorJoined(uint64,address,uint16)\":{\"params\":{\"exposureBps\":\"The operator's stake exposure in basis points\",\"operator\":\"The operator that joined\",\"serviceId\":\"The service ID\"}},\"onOperatorLeft(uint64,address)\":{\"params\":{\"operator\":\"The operator that left\",\"serviceId\":\"The service ID\"}},\"onRegister(address,bytes)\":{\"details\":\"Validate operator requirements here (stake, reputation, etc.)\",\"params\":{\"operator\":\"The operator's address\",\"registrationInputs\":\"Custom registration data (blueprint-specific encoding)\"}},\"onReject(address,uint64)\":{\"params\":{\"operator\":\"The rejecting operator\",\"requestId\":\"The request ID\"}},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"details\":\"Validate service configuration, operator selection, payment amount\",\"params\":{\"operators\":\"Requested operators\",\"paymentAmount\":\"Payment amount\",\"paymentAsset\":\"Payment token address (address(0) for native)\",\"requestId\":\"The request ID\",\"requestInputs\":\"Service configuration (blueprint-specific encoding)\",\"requester\":\"Who is requesting the service\",\"ttl\":\"Time-to-live for the service\"}},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"owner\":\"The service owner\",\"permittedCallers\":\"Addresses allowed to submit jobs\",\"requestId\":\"The original request ID\",\"serviceId\":\"The new service ID\",\"ttl\":\"Service time-to-live\"}},\"onServiceTermination(uint64,address)\":{\"params\":{\"owner\":\"The service owner\",\"serviceId\":\"The service ID\"}},\"onSlash(uint64,bytes,uint8)\":{\"params\":{\"offender\":\"The slashed operator\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage slashed\"}},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"details\":\"This is the dispute window - gather evidence, notify parties\",\"params\":{\"offender\":\"The operator being slashed (encoded as bytes for flexibility)\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage of stake to slash\"}},\"onUnregister(address)\":{\"params\":{\"operator\":\"The operator's address\"}},\"onUpdatePreferences(address,bytes)\":{\"params\":{\"newPreferences\":\"Updated preferences data\",\"operator\":\"The operator's address\"}},\"queryDeveloperPaymentAddress(uint64)\":{\"details\":\"Override to route payments to different addresses per service\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"developerPaymentAddress\":\"Address to receive developer share\"}},\"queryDisputeOrigin(uint64)\":{\"details\":\"Override to allow custom dispute resolution\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"disputeOrigin\":\"Address that can dispute (default: this contract)\"}},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"params\":{\"asset\":\"The payment asset address (address(0) for native)\",\"serviceId\":\"The service ID\"},\"returns\":{\"isAllowed\":\"True if the asset can be used for payment\"}},\"querySlashingOrigin(uint64)\":{\"details\":\"Override to allow custom slashing authorities (dispute contracts, etc.)\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"slashingOrigin\":\"Address that can slash (default: this contract)\"}},\"requiresAggregation(uint64,uint8)\":{\"details\":\"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"True if BLS aggregation is required for this job\"}}},\"title\":\"IBlueprintServiceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canJoin(uint64,address)\":{\"notice\":\"Check if an operator can join a dynamic service\"},\"canLeave(uint64,address)\":{\"notice\":\"Check if an operator can leave a dynamic service\"},\"forceRemoveAllowsBelowMin(uint64)\":{\"notice\":\"Whether `forceRemoveOperator` may drop the service below `minOperators`.\"},\"getAggregationThreshold(uint64,uint8)\":{\"notice\":\"Get the aggregation threshold configuration for a job\"},\"getExitConfig(uint64)\":{\"notice\":\"Get the exit configuration for operator departures\"},\"getHeartbeatInterval(uint64)\":{\"notice\":\"Get the heartbeat interval for a service\"},\"getHeartbeatThreshold(uint64)\":{\"notice\":\"Get the heartbeat threshold for a service\"},\"getMinOperatorStake()\":{\"notice\":\"Get the minimum stake required for operators to register for this blueprint\"},\"getNonPaymentTerminationPolicy(uint64)\":{\"notice\":\"Get non-payment termination policy for subscription services\"},\"getRequiredResultCount(uint64,uint8)\":{\"notice\":\"Get the number of results required to complete a job\"},\"getSlashingWindow(uint64)\":{\"notice\":\"Get the slashing window for a service\"},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Called when an aggregated job result is submitted\"},\"onApprove(address,uint64,uint8)\":{\"notice\":\"Called when an operator approves a service request\"},\"onBlueprintCreated(uint64,address,address)\":{\"notice\":\"Called when blueprint is created\"},\"onExitCanceled(uint64,address)\":{\"notice\":\"Called when an operator cancels their scheduled exit\"},\"onExitScheduled(uint64,address,uint64)\":{\"notice\":\"Called when an operator schedules their exit from a service\"},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"notice\":\"Called when a job is submitted\"},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"notice\":\"Called when an operator submits a job result\"},\"onOperatorJoined(uint64,address,uint16)\":{\"notice\":\"Called after an operator successfully joins a service\"},\"onOperatorLeft(uint64,address)\":{\"notice\":\"Called after an operator successfully leaves a service\"},\"onRegister(address,bytes)\":{\"notice\":\"Called when an operator registers to this blueprint\"},\"onReject(address,uint64)\":{\"notice\":\"Called when an operator rejects a service request\"},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"notice\":\"Called when a service is requested\"},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"notice\":\"Called when service becomes active (all operators approved)\"},\"onServiceTermination(uint64,address)\":{\"notice\":\"Called when service is terminated\"},\"onSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is finalized and applied\"},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is queued but not yet applied\"},\"onUnregister(address)\":{\"notice\":\"Called when an operator unregisters from this blueprint\"},\"onUpdatePreferences(address,bytes)\":{\"notice\":\"Called when an operator updates their preferences (RPC address, etc.)\"},\"queryDeveloperPaymentAddress(uint64)\":{\"notice\":\"Get the developer payment address for a service\"},\"queryDisputeOrigin(uint64)\":{\"notice\":\"Query the account authorized to dispute slashes\"},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"notice\":\"Check if a payment asset is allowed for this blueprint\"},\"querySlashingOrigin(uint64)\":{\"notice\":\"Query the account authorized to propose slashes for a service\"},\"requiresAggregation(uint64,uint8)\":{\"notice\":\"Check if a job requires BLS aggregated results\"}},\"notice\":\"Full interface for blueprint-specific service managers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBlueprintServiceManager.sol\":\"IBlueprintServiceManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IBlueprintServiceManager.sol\":{\"keccak256\":\"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483\",\"dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canJoin","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canLeave","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"forceRemoveAllowsBelowMin","outputs":[{"internalType":"bool","name":"ok","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getAggregationThreshold","outputs":[{"internalType":"uint16","name":"thresholdBps","type":"uint16"},{"internalType":"uint8","name":"thresholdType","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatInterval","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"interval","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatThreshold","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint8","name":"threshold","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinOperatorStake","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint256","name":"minStake","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getNonPaymentTerminationPolicy","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"graceIntervals","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getRequiredResultCount","outputs":[{"internalType":"uint32","name":"required","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashingWindow","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"window","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"onAggregatedResult"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint8","name":"stakingPercent","type":"uint8"}],"stateMutability":"payable","type":"function","name":"onApprove"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"tangleCore","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onBlueprintCreated"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onExitCanceled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onExitScheduled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobCall"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"bytes","name":"outputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorJoined"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorLeft"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onRegister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onReject"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"requestInputs","type":"bytes"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentAsset","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"onRequest"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onServiceInitialized"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onServiceTermination"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onUnappliedSlash"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onUnregister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"newPreferences","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onUpdatePreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDeveloperPaymentAddress","outputs":[{"internalType":"address payable","name":"developerPaymentAddress","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDisputeOrigin","outputs":[{"internalType":"address","name":"disputeOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"queryIsPaymentAssetAllowed","outputs":[{"internalType":"bool","name":"isAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"querySlashingOrigin","outputs":[{"internalType":"address","name":"slashingOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"requiresAggregation","outputs":[{"internalType":"bool","name":"required","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"canJoin(uint64,address)":{"details":"Called before operator joins - return false to reject","params":{"operator":"The operator wanting to join","serviceId":"The service ID"},"returns":{"allowed":"True if operator can join"}},"canLeave(uint64,address)":{"details":"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.","params":{"operator":"The operator wanting to leave","serviceId":"The service ID"},"returns":{"allowed":"True if operator can leave"}},"forceRemoveAllowsBelowMin(uint64)":{"details":"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).","params":{"serviceId":"The service ID"},"returns":{"ok":"True to allow eviction below the minimum operator count"}},"getAggregationThreshold(uint64,uint8)":{"details":"Only relevant if requiresAggregation returns true","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"thresholdBps":"Threshold in basis points (6700 = 67%)","thresholdType":"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)"}},"getExitConfig(uint64)":{"details":"Defines minimum commitment and exit queue timing","params":{"serviceId":"The service ID"},"returns":{"exitQueueDuration":"Time between scheduling exit and completing it (seconds)","forceExitAllowed":"Whether service owner can force-exit operators","minCommitmentDuration":"Minimum time operator must stay after joining (seconds)","useDefault":"True to use protocol default"}},"getHeartbeatInterval(uint64)":{"details":"Operators must submit heartbeats within this interval","params":{"serviceId":"The service ID"},"returns":{"interval":"Heartbeat interval in blocks (0 = disabled)","useDefault":"True to use protocol default, false to use custom value"}},"getHeartbeatThreshold(uint64)":{"details":"Percentage of operators that must respond within interval","params":{"serviceId":"The service ID"},"returns":{"threshold":"Threshold percentage (0-100)","useDefault":"True to use protocol default"}},"getMinOperatorStake()":{"details":"Called during operator registration to validate stake requirements","returns":{"minStake":"Custom minimum stake amount (only used if useDefault=false)","useDefault":"True to use protocol default from staking module"}},"getNonPaymentTerminationPolicy(uint64)":{"details":"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.","params":{"serviceId":"The service ID"},"returns":{"graceIntervals":"Additional full intervals to wait after first missed payment","useDefault":"True to use protocol default"}},"getRequiredResultCount(uint64,uint8)":{"details":"Override for consensus requirements (e.g., 2/3 majority)","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"Number of results needed (0 = service operator count)"}},"getSlashingWindow(uint64)":{"details":"Time window for disputes before slash is finalized","params":{"serviceId":"The service ID"},"returns":{"useDefault":"True to use protocol default","window":"Slashing window in blocks"}},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Validate the aggregated result, verify BLS signature, check threshold","params":{"aggregatedPubkey":"The aggregated public key of signers (G2 point)","aggregatedSignature":"The aggregated BLS signature (G1 point x, y)","job":"The job index","jobCallId":"The job call ID","output":"The aggregated output","serviceId":"The service ID","signerBitmap":"Bitmap of which operators signed"}},"onApprove(address,uint64,uint8)":{"params":{"operator":"The approving operator","requestId":"The request ID","stakingPercent":"Percentage of stake committed to this service (0-100)"}},"onBlueprintCreated(uint64,address,address)":{"details":"Store the blueprintId and tangleCore address for future reference","params":{"blueprintId":"The new blueprint ID","owner":"The blueprint owner","tangleCore":"The address of the Tangle core contract"}},"onExitCanceled(uint64,address)":{"params":{"operator":"The operator canceling exit","serviceId":"The service ID"}},"onExitScheduled(uint64,address,uint64)":{"details":"Allows manager to track pending exits, notify other parties, etc.","params":{"executeAfter":"Timestamp when exit can be executed","operator":"The operator scheduling exit","serviceId":"The service ID"}},"onJobCall(uint64,uint8,uint64,bytes)":{"details":"Validate job inputs, check caller permissions, etc.","params":{"inputs":"Job inputs (blueprint-specific encoding)","job":"The job index in the blueprint","jobCallId":"Unique ID for this job call","serviceId":"The service ID"}},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"details":"Validate result format, check operator eligibility, aggregate results","params":{"inputs":"Original job inputs","job":"The job index","jobCallId":"The job call ID","operator":"The operator submitting","outputs":"Result outputs (blueprint-specific encoding)","serviceId":"The service ID"}},"onOperatorJoined(uint64,address,uint16)":{"params":{"exposureBps":"The operator's stake exposure in basis points","operator":"The operator that joined","serviceId":"The service ID"}},"onOperatorLeft(uint64,address)":{"params":{"operator":"The operator that left","serviceId":"The service ID"}},"onRegister(address,bytes)":{"details":"Validate operator requirements here (stake, reputation, etc.)","params":{"operator":"The operator's address","registrationInputs":"Custom registration data (blueprint-specific encoding)"}},"onReject(address,uint64)":{"params":{"operator":"The rejecting operator","requestId":"The request ID"}},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"details":"Validate service configuration, operator selection, payment amount","params":{"operators":"Requested operators","paymentAmount":"Payment amount","paymentAsset":"Payment token address (address(0) for native)","requestId":"The request ID","requestInputs":"Service configuration (blueprint-specific encoding)","requester":"Who is requesting the service","ttl":"Time-to-live for the service"}},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"params":{"blueprintId":"The blueprint ID","owner":"The service owner","permittedCallers":"Addresses allowed to submit jobs","requestId":"The original request ID","serviceId":"The new service ID","ttl":"Service time-to-live"}},"onServiceTermination(uint64,address)":{"params":{"owner":"The service owner","serviceId":"The service ID"}},"onSlash(uint64,bytes,uint8)":{"params":{"offender":"The slashed operator","serviceId":"The service ID","slashPercent":"Percentage slashed"}},"onUnappliedSlash(uint64,bytes,uint8)":{"details":"This is the dispute window - gather evidence, notify parties","params":{"offender":"The operator being slashed (encoded as bytes for flexibility)","serviceId":"The service ID","slashPercent":"Percentage of stake to slash"}},"onUnregister(address)":{"params":{"operator":"The operator's address"}},"onUpdatePreferences(address,bytes)":{"params":{"newPreferences":"Updated preferences data","operator":"The operator's address"}},"queryDeveloperPaymentAddress(uint64)":{"details":"Override to route payments to different addresses per service","params":{"serviceId":"The service ID"},"returns":{"developerPaymentAddress":"Address to receive developer share"}},"queryDisputeOrigin(uint64)":{"details":"Override to allow custom dispute resolution","params":{"serviceId":"The service ID"},"returns":{"disputeOrigin":"Address that can dispute (default: this contract)"}},"queryIsPaymentAssetAllowed(uint64,address)":{"params":{"asset":"The payment asset address (address(0) for native)","serviceId":"The service ID"},"returns":{"isAllowed":"True if the asset can be used for payment"}},"querySlashingOrigin(uint64)":{"details":"Override to allow custom slashing authorities (dispute contracts, etc.)","params":{"serviceId":"The service ID"},"returns":{"slashingOrigin":"Address that can slash (default: this contract)"}},"requiresAggregation(uint64,uint8)":{"details":"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"True if BLS aggregation is required for this job"}}},"version":1},"userdoc":{"kind":"user","methods":{"canJoin(uint64,address)":{"notice":"Check if an operator can join a dynamic service"},"canLeave(uint64,address)":{"notice":"Check if an operator can leave a dynamic service"},"forceRemoveAllowsBelowMin(uint64)":{"notice":"Whether `forceRemoveOperator` may drop the service below `minOperators`."},"getAggregationThreshold(uint64,uint8)":{"notice":"Get the aggregation threshold configuration for a job"},"getExitConfig(uint64)":{"notice":"Get the exit configuration for operator departures"},"getHeartbeatInterval(uint64)":{"notice":"Get the heartbeat interval for a service"},"getHeartbeatThreshold(uint64)":{"notice":"Get the heartbeat threshold for a service"},"getMinOperatorStake()":{"notice":"Get the minimum stake required for operators to register for this blueprint"},"getNonPaymentTerminationPolicy(uint64)":{"notice":"Get non-payment termination policy for subscription services"},"getRequiredResultCount(uint64,uint8)":{"notice":"Get the number of results required to complete a job"},"getSlashingWindow(uint64)":{"notice":"Get the slashing window for a service"},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Called when an aggregated job result is submitted"},"onApprove(address,uint64,uint8)":{"notice":"Called when an operator approves a service request"},"onBlueprintCreated(uint64,address,address)":{"notice":"Called when blueprint is created"},"onExitCanceled(uint64,address)":{"notice":"Called when an operator cancels their scheduled exit"},"onExitScheduled(uint64,address,uint64)":{"notice":"Called when an operator schedules their exit from a service"},"onJobCall(uint64,uint8,uint64,bytes)":{"notice":"Called when a job is submitted"},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"notice":"Called when an operator submits a job result"},"onOperatorJoined(uint64,address,uint16)":{"notice":"Called after an operator successfully joins a service"},"onOperatorLeft(uint64,address)":{"notice":"Called after an operator successfully leaves a service"},"onRegister(address,bytes)":{"notice":"Called when an operator registers to this blueprint"},"onReject(address,uint64)":{"notice":"Called when an operator rejects a service request"},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"notice":"Called when a service is requested"},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"notice":"Called when service becomes active (all operators approved)"},"onServiceTermination(uint64,address)":{"notice":"Called when service is terminated"},"onSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is finalized and applied"},"onUnappliedSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is queued but not yet applied"},"onUnregister(address)":{"notice":"Called when an operator unregisters from this blueprint"},"onUpdatePreferences(address,bytes)":{"notice":"Called when an operator updates their preferences (RPC address, etc.)"},"queryDeveloperPaymentAddress(uint64)":{"notice":"Get the developer payment address for a service"},"queryDisputeOrigin(uint64)":{"notice":"Query the account authorized to dispute slashes"},"queryIsPaymentAssetAllowed(uint64,address)":{"notice":"Check if a payment asset is allowed for this blueprint"},"querySlashingOrigin(uint64)":{"notice":"Query the account authorized to propose slashes for a service"},"requiresAggregation(uint64,uint8)":{"notice":"Check if a job requires BLS aggregated results"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IBlueprintServiceManager.sol":"IBlueprintServiceManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IBlueprintServiceManager.sol":{"keccak256":"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4","urls":["bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483","dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q"],"license":"MIT"}},"version":1},"id":139} \ No newline at end of file +{"abi":[{"type":"function","name":"canJoin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"canLeave","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"allowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"forceRemoveAllowsBelowMin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ok","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAggregationThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"thresholdBps","type":"uint16","internalType":"uint16"},{"name":"thresholdType","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatInterval","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"interval","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatThreshold","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"threshold","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getMinOperatorStake","inputs":[],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"minStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNonPaymentTerminationPolicy","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"graceIntervals","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRequiredResultCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getSlashingWindow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"useDefault","type":"bool","internalType":"bool"},{"name":"window","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"onAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onApprove","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"stakingPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onBlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"tangleCore","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitCanceled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onExitScheduled","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onJobResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"job","type":"uint8","internalType":"uint8"},{"name":"jobCallId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"outputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onOperatorJoined","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onOperatorLeft","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRegister","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onReject","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"requestInputs","type":"bytes","internalType":"bytes"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentAsset","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onServiceInitialized","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onServiceTermination","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnappliedSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offender","type":"bytes","internalType":"bytes"},{"name":"slashPercent","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUnregister","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onUpdatePreferences","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"newPreferences","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"queryDeveloperPaymentAddress","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"developerPaymentAddress","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"queryDisputeOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"disputeOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"queryIsPaymentAssetAllowed","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"isAllowed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"querySlashingOrigin","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"slashingOrigin","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requiresAggregation","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"canJoin(uint64,address)":"b47242e8","canLeave(uint64,address)":"e518de76","forceRemoveAllowsBelowMin(uint64)":"f3e28f32","getAggregationThreshold(uint64,uint8)":"25fcc64e","getExitConfig(uint64)":"d2672ed4","getHeartbeatInterval(uint64)":"0068080b","getHeartbeatThreshold(uint64)":"92cbb78e","getMinOperatorStake()":"54dce6c2","getNonPaymentTerminationPolicy(uint64)":"71e8e85d","getRequiredResultCount(uint64,uint8)":"4c443e04","getSlashingWindow(uint64)":"3fdadfcc","onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":"158bb2eb","onApprove(address,uint64,uint8)":"b159eb34","onBlueprintCreated(uint64,address,address)":"0b6535d7","onExitCanceled(uint64,address)":"5440662c","onExitScheduled(uint64,address,uint64)":"e0559c63","onJobCall(uint64,uint8,uint64,bytes)":"9838caa3","onJobResult(uint64,uint8,uint64,address,bytes,bytes)":"c40c80d1","onOperatorJoined(uint64,address,uint16)":"9aa26a92","onOperatorLeft(uint64,address)":"965d231b","onRegister(address,bytes)":"67793cc6","onReject(address,uint64)":"c9cd4a18","onRequest(uint64,address,address[],bytes,uint64,address,uint256)":"c28cd812","onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":"82a1ece4","onServiceTermination(uint64,address)":"a24e8a90","onSlash(uint64,bytes,uint8)":"7e14b919","onUnappliedSlash(uint64,bytes,uint8)":"0881898f","onUnregister(address)":"151a4576","onUpdatePreferences(address,bytes)":"f58e2066","queryDeveloperPaymentAddress(uint64)":"08179f35","queryDisputeOrigin(uint64)":"14b4df4c","queryIsPaymentAssetAllowed(uint64,address)":"e390fcdb","querySlashingOrigin(uint64)":"74ceeb55","requiresAggregation(uint64,uint8)":"19ed5bb2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canJoin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canLeave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"forceRemoveAllowsBelowMin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getAggregationThreshold\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"thresholdBps\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"thresholdType\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatInterval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatThreshold\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinOperatorStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getNonPaymentTerminationPolicy\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"graceIntervals\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getRequiredResultCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"required\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashingWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"useDefault\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"window\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"onAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"stakingPercent\",\"type\":\"uint8\"}],\"name\":\"onApprove\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tangleCore\",\"type\":\"address\"}],\"name\":\"onBlueprintCreated\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onExitCanceled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"onExitScheduled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"onJobCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"job\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"jobCallId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputs\",\"type\":\"bytes\"}],\"name\":\"onJobResult\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"onOperatorJoined\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onOperatorLeft\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"onRegister\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"onReject\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"requestInputs\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"name\":\"onRequest\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"onServiceInitialized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onServiceTermination\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offender\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"slashPercent\",\"type\":\"uint8\"}],\"name\":\"onUnappliedSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"onUnregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newPreferences\",\"type\":\"bytes\"}],\"name\":\"onUpdatePreferences\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDeveloperPaymentAddress\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"developerPaymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"queryDisputeOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"disputeOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"queryIsPaymentAssetAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"querySlashingOrigin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"slashingOrigin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"requiresAggregation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Blueprint developers implement this to customize all aspects of their blueprint. This is the primary integration point for blueprint developers - implement the hooks you need and leave others as default (via BlueprintServiceManagerBase). The lifecycle flow: 1. Blueprint created \\u2192 onBlueprintCreated 2. Operators register \\u2192 onRegister 3. Service requested \\u2192 onRequest 4. Operators approve \\u2192 onApprove 5. Service activated \\u2192 onServiceInitialized 6. Jobs submitted \\u2192 onJobCall 7. Results submitted \\u2192 onJobResult 8. Service terminated \\u2192 onServiceTermination\",\"kind\":\"dev\",\"methods\":{\"canJoin(uint64,address)\":{\"details\":\"Called before operator joins - return false to reject\",\"params\":{\"operator\":\"The operator wanting to join\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can join\"}},\"canLeave(uint64,address)\":{\"details\":\"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.\",\"params\":{\"operator\":\"The operator wanting to leave\",\"serviceId\":\"The service ID\"},\"returns\":{\"allowed\":\"True if operator can leave\"}},\"forceRemoveAllowsBelowMin(uint64)\":{\"details\":\"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"ok\":\"True to allow eviction below the minimum operator count\"}},\"getAggregationThreshold(uint64,uint8)\":{\"details\":\"Only relevant if requiresAggregation returns true\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"thresholdBps\":\"Threshold in basis points (6700 = 67%)\",\"thresholdType\":\"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)\"}},\"getExitConfig(uint64)\":{\"details\":\"Defines minimum commitment and exit queue timing\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"exitQueueDuration\":\"Time between scheduling exit and completing it (seconds)\",\"forceExitAllowed\":\"Whether service owner can force-exit operators\",\"minCommitmentDuration\":\"Minimum time operator must stay after joining (seconds)\",\"useDefault\":\"True to use protocol default\"}},\"getHeartbeatInterval(uint64)\":{\"details\":\"Operators must submit heartbeats within this interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"interval\":\"Heartbeat interval in blocks (0 = disabled)\",\"useDefault\":\"True to use protocol default, false to use custom value\"}},\"getHeartbeatThreshold(uint64)\":{\"details\":\"Percentage of operators that must respond within interval\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"threshold\":\"Threshold percentage (0-100)\",\"useDefault\":\"True to use protocol default\"}},\"getMinOperatorStake()\":{\"details\":\"Called during operator registration to validate stake requirements\",\"returns\":{\"minStake\":\"Custom minimum stake amount (only used if useDefault=false)\",\"useDefault\":\"True to use protocol default from staking module\"}},\"getNonPaymentTerminationPolicy(uint64)\":{\"details\":\"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"graceIntervals\":\"Additional full intervals to wait after first missed payment\",\"useDefault\":\"True to use protocol default\"}},\"getRequiredResultCount(uint64,uint8)\":{\"details\":\"Override for consensus requirements (e.g., 2/3 majority)\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"Number of results needed (0 = service operator count)\"}},\"getSlashingWindow(uint64)\":{\"details\":\"Time window for disputes before slash is finalized\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"useDefault\":\"True to use protocol default\",\"window\":\"Slashing window in blocks\"}},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Validate the aggregated result, verify BLS signature, check threshold\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key of signers (G2 point)\",\"aggregatedSignature\":\"The aggregated BLS signature (G1 point x, y)\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"output\":\"The aggregated output\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap of which operators signed\"}},\"onApprove(address,uint64,uint8)\":{\"params\":{\"operator\":\"The approving operator\",\"requestId\":\"The request ID\",\"stakingPercent\":\"Percentage of stake committed to this service (0-100)\"}},\"onBlueprintCreated(uint64,address,address)\":{\"details\":\"Store the blueprintId and tangleCore address for future reference\",\"params\":{\"blueprintId\":\"The new blueprint ID\",\"owner\":\"The blueprint owner\",\"tangleCore\":\"The address of the Tangle core contract\"}},\"onExitCanceled(uint64,address)\":{\"params\":{\"operator\":\"The operator canceling exit\",\"serviceId\":\"The service ID\"}},\"onExitScheduled(uint64,address,uint64)\":{\"details\":\"Allows manager to track pending exits, notify other parties, etc.\",\"params\":{\"executeAfter\":\"Timestamp when exit can be executed\",\"operator\":\"The operator scheduling exit\",\"serviceId\":\"The service ID\"}},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"details\":\"Validate job inputs, check caller permissions, etc.\",\"params\":{\"inputs\":\"Job inputs (blueprint-specific encoding)\",\"job\":\"The job index in the blueprint\",\"jobCallId\":\"Unique ID for this job call\",\"serviceId\":\"The service ID\"}},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"details\":\"Validate result format, check operator eligibility, aggregate results\",\"params\":{\"inputs\":\"Original job inputs\",\"job\":\"The job index\",\"jobCallId\":\"The job call ID\",\"operator\":\"The operator submitting\",\"outputs\":\"Result outputs (blueprint-specific encoding)\",\"serviceId\":\"The service ID\"}},\"onOperatorJoined(uint64,address,uint16)\":{\"params\":{\"exposureBps\":\"The operator's stake exposure in basis points\",\"operator\":\"The operator that joined\",\"serviceId\":\"The service ID\"}},\"onOperatorLeft(uint64,address)\":{\"params\":{\"operator\":\"The operator that left\",\"serviceId\":\"The service ID\"}},\"onRegister(address,bytes)\":{\"details\":\"Validate operator requirements here (stake, reputation, etc.)\",\"params\":{\"operator\":\"The operator's address\",\"registrationInputs\":\"Custom registration data (blueprint-specific encoding)\"}},\"onReject(address,uint64)\":{\"params\":{\"operator\":\"The rejecting operator\",\"requestId\":\"The request ID\"}},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"details\":\"Validate service configuration, operator selection, payment amount\",\"params\":{\"operators\":\"Requested operators\",\"paymentAmount\":\"Payment amount\",\"paymentAsset\":\"Payment token address (address(0) for native)\",\"requestId\":\"The request ID\",\"requestInputs\":\"Service configuration (blueprint-specific encoding)\",\"requester\":\"Who is requesting the service\",\"ttl\":\"Time-to-live for the service\"}},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"owner\":\"The service owner\",\"permittedCallers\":\"Addresses allowed to submit jobs\",\"requestId\":\"The original request ID\",\"serviceId\":\"The new service ID\",\"ttl\":\"Service time-to-live\"}},\"onServiceTermination(uint64,address)\":{\"params\":{\"owner\":\"The service owner\",\"serviceId\":\"The service ID\"}},\"onSlash(uint64,bytes,uint8)\":{\"params\":{\"offender\":\"The slashed operator\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage slashed\"}},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"details\":\"This is the dispute window - gather evidence, notify parties\",\"params\":{\"offender\":\"The operator being slashed (encoded as bytes for flexibility)\",\"serviceId\":\"The service ID\",\"slashPercent\":\"Percentage of stake to slash\"}},\"onUnregister(address)\":{\"params\":{\"operator\":\"The operator's address\"}},\"onUpdatePreferences(address,bytes)\":{\"params\":{\"newPreferences\":\"Updated preferences data\",\"operator\":\"The operator's address\"}},\"queryDeveloperPaymentAddress(uint64)\":{\"details\":\"Override to route payments to different addresses per service\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"developerPaymentAddress\":\"Address to receive developer share\"}},\"queryDisputeOrigin(uint64)\":{\"details\":\"Override to allow custom dispute resolution\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"disputeOrigin\":\"Address that can dispute (default: this contract)\"}},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"params\":{\"asset\":\"The payment asset address (address(0) for native)\",\"serviceId\":\"The service ID\"},\"returns\":{\"isAllowed\":\"True if the asset can be used for payment\"}},\"querySlashingOrigin(uint64)\":{\"details\":\"Override to allow custom slashing authorities (dispute contracts, etc.)\",\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"slashingOrigin\":\"Address that can slash (default: this contract)\"}},\"requiresAggregation(uint64,uint8)\":{\"details\":\"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult\",\"params\":{\"jobIndex\":\"The job index\",\"serviceId\":\"The service ID\"},\"returns\":{\"required\":\"True if BLS aggregation is required for this job\"}}},\"title\":\"IBlueprintServiceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canJoin(uint64,address)\":{\"notice\":\"Check if an operator can join a dynamic service\"},\"canLeave(uint64,address)\":{\"notice\":\"Check if an operator can leave a dynamic service\"},\"forceRemoveAllowsBelowMin(uint64)\":{\"notice\":\"Whether `forceRemoveOperator` may drop the service below `minOperators`.\"},\"getAggregationThreshold(uint64,uint8)\":{\"notice\":\"Get the aggregation threshold configuration for a job\"},\"getExitConfig(uint64)\":{\"notice\":\"Get the exit configuration for operator departures\"},\"getHeartbeatInterval(uint64)\":{\"notice\":\"Get the heartbeat interval for a service\"},\"getHeartbeatThreshold(uint64)\":{\"notice\":\"Get the heartbeat threshold for a service\"},\"getMinOperatorStake()\":{\"notice\":\"Get the minimum stake required for operators to register for this blueprint\"},\"getNonPaymentTerminationPolicy(uint64)\":{\"notice\":\"Get non-payment termination policy for subscription services\"},\"getRequiredResultCount(uint64,uint8)\":{\"notice\":\"Get the number of results required to complete a job\"},\"getSlashingWindow(uint64)\":{\"notice\":\"Get the slashing window for a service\"},\"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Called when an aggregated job result is submitted\"},\"onApprove(address,uint64,uint8)\":{\"notice\":\"Called when an operator approves a service request\"},\"onBlueprintCreated(uint64,address,address)\":{\"notice\":\"Called when blueprint is created\"},\"onExitCanceled(uint64,address)\":{\"notice\":\"Called when an operator cancels their scheduled exit\"},\"onExitScheduled(uint64,address,uint64)\":{\"notice\":\"Called when an operator schedules their exit from a service\"},\"onJobCall(uint64,uint8,uint64,bytes)\":{\"notice\":\"Called when a job is submitted\"},\"onJobResult(uint64,uint8,uint64,address,bytes,bytes)\":{\"notice\":\"Called when an operator submits a job result\"},\"onOperatorJoined(uint64,address,uint16)\":{\"notice\":\"Called after an operator successfully joins a service\"},\"onOperatorLeft(uint64,address)\":{\"notice\":\"Called after an operator successfully leaves a service\"},\"onRegister(address,bytes)\":{\"notice\":\"Called when an operator registers to this blueprint\"},\"onReject(address,uint64)\":{\"notice\":\"Called when an operator rejects a service request\"},\"onRequest(uint64,address,address[],bytes,uint64,address,uint256)\":{\"notice\":\"Called when a service is requested\"},\"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)\":{\"notice\":\"Called when service becomes active (all operators approved)\"},\"onServiceTermination(uint64,address)\":{\"notice\":\"Called when service is terminated\"},\"onSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is finalized and applied\"},\"onUnappliedSlash(uint64,bytes,uint8)\":{\"notice\":\"Called when a slash is queued but not yet applied\"},\"onUnregister(address)\":{\"notice\":\"Called when an operator unregisters from this blueprint\"},\"onUpdatePreferences(address,bytes)\":{\"notice\":\"Called when an operator updates their preferences (RPC address, etc.)\"},\"queryDeveloperPaymentAddress(uint64)\":{\"notice\":\"Get the developer payment address for a service\"},\"queryDisputeOrigin(uint64)\":{\"notice\":\"Query the account authorized to dispute slashes\"},\"queryIsPaymentAssetAllowed(uint64,address)\":{\"notice\":\"Check if a payment asset is allowed for this blueprint\"},\"querySlashingOrigin(uint64)\":{\"notice\":\"Query the account authorized to propose slashes for a service\"},\"requiresAggregation(uint64,uint8)\":{\"notice\":\"Check if a job requires BLS aggregated results\"}},\"notice\":\"Full interface for blueprint-specific service managers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IBlueprintServiceManager.sol\":\"IBlueprintServiceManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IBlueprintServiceManager.sol\":{\"keccak256\":\"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483\",\"dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canJoin","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canLeave","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"forceRemoveAllowsBelowMin","outputs":[{"internalType":"bool","name":"ok","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getAggregationThreshold","outputs":[{"internalType":"uint16","name":"thresholdBps","type":"uint16"},{"internalType":"uint8","name":"thresholdType","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatInterval","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"interval","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatThreshold","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint8","name":"threshold","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinOperatorStake","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint256","name":"minStake","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getNonPaymentTerminationPolicy","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"graceIntervals","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getRequiredResultCount","outputs":[{"internalType":"uint32","name":"required","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashingWindow","outputs":[{"internalType":"bool","name":"useDefault","type":"bool"},{"internalType":"uint64","name":"window","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"onAggregatedResult"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint8","name":"stakingPercent","type":"uint8"}],"stateMutability":"payable","type":"function","name":"onApprove"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"tangleCore","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onBlueprintCreated"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onExitCanceled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onExitScheduled"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobCall"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"job","type":"uint8"},{"internalType":"uint64","name":"jobCallId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"bytes","name":"outputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onJobResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorJoined"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onOperatorLeft"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onRegister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onReject"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"requestInputs","type":"bytes"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentAsset","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"onRequest"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"onServiceInitialized"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onServiceTermination"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bytes","name":"offender","type":"bytes"},{"internalType":"uint8","name":"slashPercent","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"onUnappliedSlash"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"onUnregister"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes","name":"newPreferences","type":"bytes"}],"stateMutability":"payable","type":"function","name":"onUpdatePreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDeveloperPaymentAddress","outputs":[{"internalType":"address payable","name":"developerPaymentAddress","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"queryDisputeOrigin","outputs":[{"internalType":"address","name":"disputeOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function","name":"queryIsPaymentAssetAllowed","outputs":[{"internalType":"bool","name":"isAllowed","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"querySlashingOrigin","outputs":[{"internalType":"address","name":"slashingOrigin","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"requiresAggregation","outputs":[{"internalType":"bool","name":"required","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"canJoin(uint64,address)":{"details":"Called before operator joins - return false to reject","params":{"operator":"The operator wanting to join","serviceId":"The service ID"},"returns":{"allowed":"True if operator can join"}},"canLeave(uint64,address)":{"details":"Called before operator leaves - return false to reject Note: This is called AFTER the exit queue check. Use getExitConfig to customize timing.","params":{"operator":"The operator wanting to leave","serviceId":"The service ID"},"returns":{"allowed":"True if operator can leave"}},"forceRemoveAllowsBelowMin(uint64)":{"details":"By default the protocol enforces `operatorCount > minOperators` even when a blueprint manager calls `forceRemoveOperator`. A blueprint that genuinely needs emergency-eviction-below-min must self-document by returning true. Reverts / unimplemented => protocol enforces the floor (fail-closed).","params":{"serviceId":"The service ID"},"returns":{"ok":"True to allow eviction below the minimum operator count"}},"getAggregationThreshold(uint64,uint8)":{"details":"Only relevant if requiresAggregation returns true","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"thresholdBps":"Threshold in basis points (6700 = 67%)","thresholdType":"0 = CountBased (% of operators), 1 = StakeWeighted (% of total stake)"}},"getExitConfig(uint64)":{"details":"Defines minimum commitment and exit queue timing","params":{"serviceId":"The service ID"},"returns":{"exitQueueDuration":"Time between scheduling exit and completing it (seconds)","forceExitAllowed":"Whether service owner can force-exit operators","minCommitmentDuration":"Minimum time operator must stay after joining (seconds)","useDefault":"True to use protocol default"}},"getHeartbeatInterval(uint64)":{"details":"Operators must submit heartbeats within this interval","params":{"serviceId":"The service ID"},"returns":{"interval":"Heartbeat interval in blocks (0 = disabled)","useDefault":"True to use protocol default, false to use custom value"}},"getHeartbeatThreshold(uint64)":{"details":"Percentage of operators that must respond within interval","params":{"serviceId":"The service ID"},"returns":{"threshold":"Threshold percentage (0-100)","useDefault":"True to use protocol default"}},"getMinOperatorStake()":{"details":"Called during operator registration to validate stake requirements","returns":{"minStake":"Custom minimum stake amount (only used if useDefault=false)","useDefault":"True to use protocol default from staking module"}},"getNonPaymentTerminationPolicy(uint64)":{"details":"Core computes eligibility as: `lastPaymentAt + subscriptionInterval + (subscriptionInterval * graceIntervals)`. `graceIntervals = 0` means termination is eligible immediately at first due time. Implementations should return `useDefault=true` unless they need custom grace behavior.","params":{"serviceId":"The service ID"},"returns":{"graceIntervals":"Additional full intervals to wait after first missed payment","useDefault":"True to use protocol default"}},"getRequiredResultCount(uint64,uint8)":{"details":"Override for consensus requirements (e.g., 2/3 majority)","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"Number of results needed (0 = service operator count)"}},"getSlashingWindow(uint64)":{"details":"Time window for disputes before slash is finalized","params":{"serviceId":"The service ID"},"returns":{"useDefault":"True to use protocol default","window":"Slashing window in blocks"}},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Validate the aggregated result, verify BLS signature, check threshold","params":{"aggregatedPubkey":"The aggregated public key of signers (G2 point)","aggregatedSignature":"The aggregated BLS signature (G1 point x, y)","job":"The job index","jobCallId":"The job call ID","output":"The aggregated output","serviceId":"The service ID","signerBitmap":"Bitmap of which operators signed"}},"onApprove(address,uint64,uint8)":{"params":{"operator":"The approving operator","requestId":"The request ID","stakingPercent":"Percentage of stake committed to this service (0-100)"}},"onBlueprintCreated(uint64,address,address)":{"details":"Store the blueprintId and tangleCore address for future reference","params":{"blueprintId":"The new blueprint ID","owner":"The blueprint owner","tangleCore":"The address of the Tangle core contract"}},"onExitCanceled(uint64,address)":{"params":{"operator":"The operator canceling exit","serviceId":"The service ID"}},"onExitScheduled(uint64,address,uint64)":{"details":"Allows manager to track pending exits, notify other parties, etc.","params":{"executeAfter":"Timestamp when exit can be executed","operator":"The operator scheduling exit","serviceId":"The service ID"}},"onJobCall(uint64,uint8,uint64,bytes)":{"details":"Validate job inputs, check caller permissions, etc.","params":{"inputs":"Job inputs (blueprint-specific encoding)","job":"The job index in the blueprint","jobCallId":"Unique ID for this job call","serviceId":"The service ID"}},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"details":"Validate result format, check operator eligibility, aggregate results","params":{"inputs":"Original job inputs","job":"The job index","jobCallId":"The job call ID","operator":"The operator submitting","outputs":"Result outputs (blueprint-specific encoding)","serviceId":"The service ID"}},"onOperatorJoined(uint64,address,uint16)":{"params":{"exposureBps":"The operator's stake exposure in basis points","operator":"The operator that joined","serviceId":"The service ID"}},"onOperatorLeft(uint64,address)":{"params":{"operator":"The operator that left","serviceId":"The service ID"}},"onRegister(address,bytes)":{"details":"Validate operator requirements here (stake, reputation, etc.)","params":{"operator":"The operator's address","registrationInputs":"Custom registration data (blueprint-specific encoding)"}},"onReject(address,uint64)":{"params":{"operator":"The rejecting operator","requestId":"The request ID"}},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"details":"Validate service configuration, operator selection, payment amount","params":{"operators":"Requested operators","paymentAmount":"Payment amount","paymentAsset":"Payment token address (address(0) for native)","requestId":"The request ID","requestInputs":"Service configuration (blueprint-specific encoding)","requester":"Who is requesting the service","ttl":"Time-to-live for the service"}},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"params":{"blueprintId":"The blueprint ID","owner":"The service owner","permittedCallers":"Addresses allowed to submit jobs","requestId":"The original request ID","serviceId":"The new service ID","ttl":"Service time-to-live"}},"onServiceTermination(uint64,address)":{"params":{"owner":"The service owner","serviceId":"The service ID"}},"onSlash(uint64,bytes,uint8)":{"params":{"offender":"The slashed operator","serviceId":"The service ID","slashPercent":"Percentage slashed"}},"onUnappliedSlash(uint64,bytes,uint8)":{"details":"This is the dispute window - gather evidence, notify parties","params":{"offender":"The operator being slashed (encoded as bytes for flexibility)","serviceId":"The service ID","slashPercent":"Percentage of stake to slash"}},"onUnregister(address)":{"params":{"operator":"The operator's address"}},"onUpdatePreferences(address,bytes)":{"params":{"newPreferences":"Updated preferences data","operator":"The operator's address"}},"queryDeveloperPaymentAddress(uint64)":{"details":"Override to route payments to different addresses per service","params":{"serviceId":"The service ID"},"returns":{"developerPaymentAddress":"Address to receive developer share"}},"queryDisputeOrigin(uint64)":{"details":"Override to allow custom dispute resolution","params":{"serviceId":"The service ID"},"returns":{"disputeOrigin":"Address that can dispute (default: this contract)"}},"queryIsPaymentAssetAllowed(uint64,address)":{"params":{"asset":"The payment asset address (address(0) for native)","serviceId":"The service ID"},"returns":{"isAllowed":"True if the asset can be used for payment"}},"querySlashingOrigin(uint64)":{"details":"Override to allow custom slashing authorities (dispute contracts, etc.)","params":{"serviceId":"The service ID"},"returns":{"slashingOrigin":"Address that can slash (default: this contract)"}},"requiresAggregation(uint64,uint8)":{"details":"When true, operators must submit individual signatures that are aggregated off-chain, then submitted via submitAggregatedResult instead of submitResult","params":{"jobIndex":"The job index","serviceId":"The service ID"},"returns":{"required":"True if BLS aggregation is required for this job"}}},"version":1},"userdoc":{"kind":"user","methods":{"canJoin(uint64,address)":{"notice":"Check if an operator can join a dynamic service"},"canLeave(uint64,address)":{"notice":"Check if an operator can leave a dynamic service"},"forceRemoveAllowsBelowMin(uint64)":{"notice":"Whether `forceRemoveOperator` may drop the service below `minOperators`."},"getAggregationThreshold(uint64,uint8)":{"notice":"Get the aggregation threshold configuration for a job"},"getExitConfig(uint64)":{"notice":"Get the exit configuration for operator departures"},"getHeartbeatInterval(uint64)":{"notice":"Get the heartbeat interval for a service"},"getHeartbeatThreshold(uint64)":{"notice":"Get the heartbeat threshold for a service"},"getMinOperatorStake()":{"notice":"Get the minimum stake required for operators to register for this blueprint"},"getNonPaymentTerminationPolicy(uint64)":{"notice":"Get non-payment termination policy for subscription services"},"getRequiredResultCount(uint64,uint8)":{"notice":"Get the number of results required to complete a job"},"getSlashingWindow(uint64)":{"notice":"Get the slashing window for a service"},"onAggregatedResult(uint64,uint8,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Called when an aggregated job result is submitted"},"onApprove(address,uint64,uint8)":{"notice":"Called when an operator approves a service request"},"onBlueprintCreated(uint64,address,address)":{"notice":"Called when blueprint is created"},"onExitCanceled(uint64,address)":{"notice":"Called when an operator cancels their scheduled exit"},"onExitScheduled(uint64,address,uint64)":{"notice":"Called when an operator schedules their exit from a service"},"onJobCall(uint64,uint8,uint64,bytes)":{"notice":"Called when a job is submitted"},"onJobResult(uint64,uint8,uint64,address,bytes,bytes)":{"notice":"Called when an operator submits a job result"},"onOperatorJoined(uint64,address,uint16)":{"notice":"Called after an operator successfully joins a service"},"onOperatorLeft(uint64,address)":{"notice":"Called after an operator successfully leaves a service"},"onRegister(address,bytes)":{"notice":"Called when an operator registers to this blueprint"},"onReject(address,uint64)":{"notice":"Called when an operator rejects a service request"},"onRequest(uint64,address,address[],bytes,uint64,address,uint256)":{"notice":"Called when a service is requested"},"onServiceInitialized(uint64,uint64,uint64,address,address[],uint64)":{"notice":"Called when service becomes active (all operators approved)"},"onServiceTermination(uint64,address)":{"notice":"Called when service is terminated"},"onSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is finalized and applied"},"onUnappliedSlash(uint64,bytes,uint8)":{"notice":"Called when a slash is queued but not yet applied"},"onUnregister(address)":{"notice":"Called when an operator unregisters from this blueprint"},"onUpdatePreferences(address,bytes)":{"notice":"Called when an operator updates their preferences (RPC address, etc.)"},"queryDeveloperPaymentAddress(uint64)":{"notice":"Get the developer payment address for a service"},"queryDisputeOrigin(uint64)":{"notice":"Query the account authorized to dispute slashes"},"queryIsPaymentAssetAllowed(uint64,address)":{"notice":"Check if a payment asset is allowed for this blueprint"},"querySlashingOrigin(uint64)":{"notice":"Query the account authorized to propose slashes for a service"},"requiresAggregation(uint64,uint8)":{"notice":"Check if a job requires BLS aggregated results"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IBlueprintServiceManager.sol":"IBlueprintServiceManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IBlueprintServiceManager.sol":{"keccak256":"0xe592283149702fc0f8592bba425ff015a2ca8f2fa3116db0f97c6f5ae5cf55c4","urls":["bzz-raw://355b3bb40117686eba0e18a0df493f4dccac455afef973a7018c86599c07b483","dweb:/ipfs/QmVrz8WJwg8nuGJubaQnLv9PdRmXNcZf4fAbp2pNfBPH2Q"],"license":"MIT"}},"version":1},"id":139} \ No newline at end of file diff --git a/bindings/abi/IMultiAssetDelegation.json b/bindings/abi/IMultiAssetDelegation.json index 3be92668..ca4c57fe 100644 --- a/bindings/abi/IMultiAssetDelegation.json +++ b/bindings/abi/IMultiAssetDelegation.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"addBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addBlueprintToDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"advanceRound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositERC20WithLock","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWithLock","inputs":[{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"disableAsset","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAssetWithAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstakeAndWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeOperatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAssetConfig","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.AssetConfig","components":[{"name":"enabled","type":"bool","internalType":"bool"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegationBlueprints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getDelegationMode","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.DelegationMode"}],"stateMutability":"view"},{"type":"function","name":"getDelegations","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondInfoDelegator[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"}]}],"stateMutability":"view"},{"type":"function","name":"getDeposit","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Deposit","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"delegatedAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getLocks","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.LockInfo[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"multiplier","type":"uint8","internalType":"enum Types.LockMultiplier"},{"name":"expiryBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlueprints","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatorCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegators","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorMetadata","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorMetadata","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"delegationCount","type":"uint32","internalType":"uint32"},{"name":"status","type":"uint8","internalType":"enum Types.OperatorStatus"},{"name":"leavingRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorRewardPool","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRewardPool","components":[{"name":"totalShares","type":"uint256","internalType":"uint256"},{"name":"totalAssets","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorSelfStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingCommissionChange","inputs":[],"outputs":[{"name":"pendingBps","type":"uint16","internalType":"uint16"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPendingUnstakes","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondLessRequest[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"slashFactorSnapshot","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingWithdrawals","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.WithdrawRequest[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getTotalDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseStake","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"increaseStakeWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorActive","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"meetsStakeRequirement","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minOperatorStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAt","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previewDelegatorUnstakeShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"registerOperatorWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintFromDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescueTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"scheduleDelegatorUnstake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleOperatorUnstake","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDelays","inputs":[{"name":"delegationBondLessDelay","type":"uint64","internalType":"uint64"},{"name":"leaveDelegatorsDelay","type":"uint64","internalType":"uint64"},{"name":"leaveOperatorsDelay","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationMode","inputs":[{"name":"mode","type":"uint8","internalType":"enum Types.DelegationMode"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationWhitelist","inputs":[{"name":"delegators","type":"address[]","internalType":"address[]"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorBondToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorCommission","inputs":[{"name":"bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequireAdapters","inputs":[{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTangle","inputs":[{"name":"tangle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForBlueprint","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForService","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterRegistered","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterRemoved","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetDisabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetEnabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"minOperatorStake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minDelegation","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequireAdaptersUpdated","inputs":[{"name":"required","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoundAdvanced","inputs":[{"name":"round","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","addBlueprintForOperator(address,uint64)":"b9c04c1b","addBlueprintToDelegation(uint256,uint64)":"23cc2700","addSlasher(address)":"68a9f19c","advanceRound()":"1ba9998b","canDelegate(address,address)":"2aa81239","cancelCommissionChange()":"dc71ef30","completeLeaving()":"d1736ba7","currentRound()":"8a19c8bc","delegate(address,uint256)":"026e402b","delegateWithOptions(address,address,uint256,uint8,uint64[])":"fd7d3dbc","delegationBondLessDelay()":"ba05bbf5","deposit()":"d0e30db0","depositAndDelegate(address)":"461cc23b","depositAndDelegateWithOptions(address,address,uint256,uint8,uint64[])":"fbec4861","depositERC20(address,uint256)":"97feb926","depositERC20WithLock(address,uint256,uint8)":"cb15038b","depositWithLock(uint8)":"f38c7c4e","disableAsset(address)":"70807528","enableAsset(address,uint256,uint256,uint256,uint16)":"354ebef9","enableAssetWithAdapter(address,address,uint256,uint256,uint256,uint16)":"f0b52bb4","executeCommissionChange()":"46c9b454","executeDelegatorUnstake()":"007910d0","executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":"bf690206","executeOperatorUnstake()":"b0dfce06","executeWithdraw()":"f8fd9795","getAssetConfig(address)":"6ec3ab67","getDelegation(address,address)":"15049a5a","getDelegationBlueprints(address,uint256)":"7b9996c5","getDelegationMode(address)":"7bed797d","getDelegations(address)":"31cc13ba","getDeposit(address,address)":"c35082a9","getLocks(address,address)":"0c8833ce","getOperatorBlueprints(address)":"dc972ccc","getOperatorDelegatedStake(address)":"8c5b4ae7","getOperatorDelegatedStakeForAsset(address,(uint8,address))":"20e1b202","getOperatorDelegatorCount(address)":"486398c3","getOperatorDelegators(address)":"a299e298","getOperatorMetadata(address)":"2ee663b8","getOperatorRewardPool(address)":"03587c1d","getOperatorSelfStake(address)":"d673e0b9","getOperatorStake(address)":"e4e88de8","getOperatorStakeForAsset(address,(uint8,address))":"3501b458","getPendingCommissionChange()":"c6b7a813","getPendingUnstakes(address)":"5722d512","getPendingWithdrawals(address)":"f340c0d0","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getTotalDelegation(address)":"fc5e7e09","increaseStake()":"d9e257ef","increaseStakeWithAsset(address,uint256)":"e5e27b6a","isOperator(address)":"6d70f7ae","isOperatorActive(address)":"eb473533","isSlasher(address)":"57601c5d","isWhitelisted(address,address)":"b6b35272","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","meetsStakeRequirement(address,uint256)":"f46913bb","minOperatorStake()":"d775cb61","operatorAt(uint256)":"26142335","operatorBondToken()":"0f157fb9","operatorCommissionBps()":"32273f61","operatorCount()":"7c6f3158","pause()":"8456cb59","previewDelegatorUnstakeShares(address,address,uint256)":"71ed20b6","registerAdapter(address,address)":"d655b92a","registerOperator()":"2acde098","registerOperatorWithAsset(address,uint256)":"e0a5825b","removeAdapter(address)":"585cd34b","removeBlueprintForOperator(address,uint64)":"d106de35","removeBlueprintFromDelegation(uint256,uint64)":"859caa18","removeSlasher(address)":"aac6aa9c","rescueTokens(address,address,uint256)":"cea9d26f","rewardsManager()":"defe2053","roundDuration()":"f7cb789a","scheduleDelegatorUnstake(address,address,uint256)":"fc8a91af","scheduleOperatorUnstake(uint256)":"44aff252","scheduleWithdraw(address,uint256)":"e1ee4bcc","serviceFeeDistributor()":"2e40f7fb","setDelays(uint64,uint64,uint64)":"03780211","setDelegationMode(uint8)":"7202f76a","setDelegationWhitelist(address[],bool)":"c353c1f6","setOperatorBondToken(address)":"84f5ef65","setOperatorCommission(uint16)":"f3c4d8a0","setRequireAdapters(bool)":"7b76fe5e","setRewardsManager(address)":"0a8ddc5e","setServiceFeeDistributor(address)":"fbcc7b3d","setTangle(address)":"bf5274a7","slash(address,uint64,uint16,bytes32)":"ff38b049","slashForBlueprint(address,uint64,uint64,uint16,bytes32)":"614b1d9b","slashForService(address,uint64,uint64,((uint8,address),uint16)[],uint16,bytes32)":"675b3c43","snapshotOperator(address)":"cadd550c","startLeaving()":"87703550","undelegate(address,uint256)":"4d99dd16","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AdapterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AssetDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"}],\"name\":\"AssetEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"RequireAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"}],\"name\":\"RoundAdvanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintToDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"addSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"advanceRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"canDelegate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"completeLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"delegateWithOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"depositAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"depositAndDelegateWithOptions\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositERC20WithLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositWithLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAssetWithAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"executeDelegatorUnstakeAndWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getDelegationBlueprints\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegationMode\",\"outputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.BondInfoDelegator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeposit\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegatedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Deposit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"multiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"expiryBlock\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.LockInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlueprints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorDelegatedStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"delegationCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"leavingRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRewardPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorRewardPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingCommissionChange\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"pendingBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingUnstakes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"slashFactorSnapshot\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BondLessRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingWithdrawals\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.WithdrawRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getTotalDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseStakeWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSlasher\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"meetsStakeRequirement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"operatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"previewDelegatorUnstakeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"registerAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerOperatorWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintFromDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"removeSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"delegationBondLessDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveDelegatorsDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveOperatorsDelay\",\"type\":\"uint64\"}],\"name\":\"setDelays\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setDelegationMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"delegators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setDelegationWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setOperatorBondToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"setRequireAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setRewardsManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tangle\",\"type\":\"address\"}],\"name\":\"setTangle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForBlueprint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForService\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"snapshotOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"INTERFACE STRUCTURE: This interface is intentionally comprehensive to maintain backward compatibility. Logically, it can be viewed as composed of these segments: - Operator Functions: registration, staking, blueprint management - Deposit Functions: native/ERC20 deposits with optional locks - Delegation Functions: delegate/undelegate with blueprint selection - Slashing: slash functions and related queries - Asset Management: enable/disable assets, adapters - View Functions: read-only queries for state - Admin Functions: protocol configuration Future versions may split into focused sub-interfaces (e.g., IOperatorManager, IDepositManager, IDelegationManager) for better composability.\",\"kind\":\"dev\",\"methods\":{\"canDelegate(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if delegation is allowed\"}},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"details\":\"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.\",\"params\":{\"operator\":\"Operator to unstake from\",\"receiver\":\"Recipient of the withdrawn assets\",\"requestedRound\":\"Round in which the unstake was scheduled\",\"shares\":\"Shares to unstake (as stored in the underlying bond-less request)\",\"token\":\"Token address (address(0) for native)\"},\"returns\":{\"amount\":\"Actual amount returned (after exchange-rate adjustments)\"}},\"getDelegationMode(address)\":{\"params\":{\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"The current delegation mode\"}},\"isWhitelisted(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if whitelisted\"}},\"setDelegationMode(uint8)\":{\"params\":{\"mode\":\"Delegation mode: Disabled (0), Whitelist (1), or Open (2)\"}},\"setDelegationWhitelist(address[],bool)\":{\"params\":{\"approved\":\"True to approve, false to revoke\",\"delegators\":\"Array of delegator addresses to update\"}}},\"title\":\"IMultiAssetDelegation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canDelegate(address,address)\":{\"notice\":\"Check if delegator can delegate to operator\"},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"notice\":\"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`.\"},\"getDelegationMode(address)\":{\"notice\":\"Get operator's delegation mode\"},\"getOperatorRewardPool(address)\":{\"notice\":\"Get the operator's reward pool for the bond asset\"},\"isWhitelisted(address,address)\":{\"notice\":\"Check if delegator is whitelisted\"},\"setDelegationMode(uint8)\":{\"notice\":\"Set delegation mode for the operator\"},\"setDelegationWhitelist(address[],bool)\":{\"notice\":\"Update whitelist for the operator (batch)\"}},\"notice\":\"Full interface for the multi-asset staking contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IMultiAssetDelegation.sol\":\"IMultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMultiAssetDelegation.sol\":{\"keccak256\":\"0x46ffd71a3c9f7e812a495b71b65a434e855da52b4ddde58873b6ef150e0be691\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f99c68304f8d1e66634e5169f96e2ca4590afdfa0c4fa604bef8b56412849773\",\"dweb:/ipfs/QmVFUqx7TT7NN5wm4f9PKXaRq1E4DSoyeHQHitRUkFbhJd\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7\",\"dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c\",\"dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67\",\"dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0\",\"dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d\",\"dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"adapter","type":"address","indexed":true}],"type":"event","name":"AdapterRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AdapterRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AssetDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"minOperatorStake","type":"uint256","indexed":false},{"internalType":"uint256","name":"minDelegation","type":"uint256","indexed":false}],"type":"event","name":"AssetEnabled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"bool","name":"required","type":"bool","indexed":false}],"type":"event","name":"RequireAdaptersUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64","indexed":true}],"type":"event","name":"RoundAdvanced","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintToDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSlasher"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"advanceRound"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"canDelegate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"completeLeaving"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"delegateWithOptions"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"payable","type":"function","name":"depositAndDelegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"payable","type":"function","name":"depositAndDelegateWithOptions"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20WithLock"},{"inputs":[{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"payable","type":"function","name":"depositWithLock"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAssetWithAdapter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstake"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstakeAndWithdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeOperatorUnstake"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeWithdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetConfig","outputs":[{"internalType":"struct Types.AssetConfig","name":"","type":"tuple","components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDelegationBlueprints","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegationMode","outputs":[{"internalType":"enum Types.DelegationMode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegations","outputs":[{"internalType":"struct Types.BondInfoDelegator[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposit","outputs":[{"internalType":"struct Types.Deposit","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"delegatedAmount","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getLocks","outputs":[{"internalType":"struct Types.LockInfo[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"multiplier","type":"uint8"},{"internalType":"uint64","name":"expiryBlock","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlueprints","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorMetadata","outputs":[{"internalType":"struct Types.OperatorMetadata","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint32","name":"delegationCount","type":"uint32"},{"internalType":"enum Types.OperatorStatus","name":"status","type":"uint8"},{"internalType":"uint64","name":"leavingRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRewardPool","outputs":[{"internalType":"struct Types.OperatorRewardPool","name":"","type":"tuple","components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPendingCommissionChange","outputs":[{"internalType":"uint16","name":"pendingBps","type":"uint16"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingUnstakes","outputs":[{"internalType":"struct Types.BondLessRequest[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint256","name":"slashFactorSnapshot","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingWithdrawals","outputs":[{"internalType":"struct Types.WithdrawRequest[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalDelegation","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"increaseStake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseStakeWithAsset"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSlasher","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"}],"stateMutability":"view","type":"function","name":"meetsStakeRequirement","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDelegatorUnstakeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAdapter"},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAdapter"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintFromDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSlasher"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rescueTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleDelegatorUnstake"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleOperatorUnstake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"delegationBondLessDelay","type":"uint64"},{"internalType":"uint64","name":"leaveDelegatorsDelay","type":"uint64"},{"internalType":"uint64","name":"leaveOperatorsDelay","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDelays"},{"inputs":[{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationMode"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationWhitelist"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorBondToken"},{"inputs":[{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorCommission"},{"inputs":[{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRequireAdapters"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsManager"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"address","name":"tangle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTangle"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForBlueprint","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForService","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"snapshotOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startLeaving"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"undelegate"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"canDelegate(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if delegation is allowed"}},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"details":"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.","params":{"operator":"Operator to unstake from","receiver":"Recipient of the withdrawn assets","requestedRound":"Round in which the unstake was scheduled","shares":"Shares to unstake (as stored in the underlying bond-less request)","token":"Token address (address(0) for native)"},"returns":{"amount":"Actual amount returned (after exchange-rate adjustments)"}},"getDelegationMode(address)":{"params":{"operator":"Operator address"},"returns":{"_0":"The current delegation mode"}},"isWhitelisted(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if whitelisted"}},"setDelegationMode(uint8)":{"params":{"mode":"Delegation mode: Disabled (0), Whitelist (1), or Open (2)"}},"setDelegationWhitelist(address[],bool)":{"params":{"approved":"True to approve, false to revoke","delegators":"Array of delegator addresses to update"}}},"version":1},"userdoc":{"kind":"user","methods":{"canDelegate(address,address)":{"notice":"Check if delegator can delegate to operator"},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"notice":"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`."},"getDelegationMode(address)":{"notice":"Get operator's delegation mode"},"getOperatorRewardPool(address)":{"notice":"Get the operator's reward pool for the bond asset"},"isWhitelisted(address,address)":{"notice":"Check if delegator is whitelisted"},"setDelegationMode(uint8)":{"notice":"Set delegation mode for the operator"},"setDelegationWhitelist(address[],bool)":{"notice":"Update whitelist for the operator (batch)"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IMultiAssetDelegation.sol":"IMultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMultiAssetDelegation.sol":{"keccak256":"0x46ffd71a3c9f7e812a495b71b65a434e855da52b4ddde58873b6ef150e0be691","urls":["bzz-raw://f99c68304f8d1e66634e5169f96e2ca4590afdfa0c4fa604bef8b56412849773","dweb:/ipfs/QmVFUqx7TT7NN5wm4f9PKXaRq1E4DSoyeHQHitRUkFbhJd"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d","urls":["bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7","dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267","urls":["bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c","dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5","urls":["bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67","dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8","urls":["bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0","dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae","urls":["bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d","dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os"],"license":"MIT"}},"version":1},"id":145} \ No newline at end of file +{"abi":[{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"addBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addBlueprintToDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"advanceRound","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"cancelCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"completeLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegate","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndDelegateWithOptions","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"blueprintIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositERC20WithLock","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWithLock","inputs":[{"name":"lockMultiplier","type":"uint8","internalType":"enum Types.LockMultiplier"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"disableAsset","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableAssetWithAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCommissionChange","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeDelegatorUnstakeAndWithdraw","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeOperatorUnstake","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeWithdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAssetConfig","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.AssetConfig","components":[{"name":"enabled","type":"bool","internalType":"bool"},{"name":"minOperatorStake","type":"uint256","internalType":"uint256"},{"name":"minDelegation","type":"uint256","internalType":"uint256"},{"name":"depositCap","type":"uint256","internalType":"uint256"},{"name":"currentDeposits","type":"uint256","internalType":"uint256"},{"name":"rewardMultiplierBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getCumStakeSeconds","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"cum","type":"uint256","internalType":"uint256"},{"name":"lastUpdate","type":"uint64","internalType":"uint64"},{"name":"currentStake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getDelegationBlueprints","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getDelegationMode","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.DelegationMode"}],"stateMutability":"view"},{"type":"function","name":"getDelegations","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondInfoDelegator[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"}]}],"stateMutability":"view"},{"type":"function","name":"getDeposit","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Deposit","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"delegatedAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getLocks","inputs":[{"name":"delegator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.LockInfo[]","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"multiplier","type":"uint8","internalType":"enum Types.LockMultiplier"},{"name":"expiryBlock","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlueprints","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatedStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegatorCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorDelegators","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorMetadata","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorMetadata","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"delegationCount","type":"uint32","internalType":"uint32"},{"name":"status","type":"uint8","internalType":"enum Types.OperatorStatus"},{"name":"leavingRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorRewardPool","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRewardPool","components":[{"name":"totalShares","type":"uint256","internalType":"uint256"},{"name":"totalAssets","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorSelfStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeForAsset","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingCommissionChange","inputs":[],"outputs":[{"name":"pendingBps","type":"uint16","internalType":"uint16"},{"name":"executeAfter","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getPendingUnstakes","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.BondLessRequest[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"shares","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"},{"name":"selectionMode","type":"uint8","internalType":"enum Types.BlueprintSelectionMode"},{"name":"slashFactorSnapshot","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingWithdrawals","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.WithdrawRequest[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"requestedRound","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashIndex","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getTotalDelegation","inputs":[{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"increaseStake","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"increaseStakeWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorActive","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSlasher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"meetsStakeRequirement","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minOperatorStake","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAt","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"previewDelegatorUnstakeShares","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registerAdapter","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"adapter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"registerOperatorWithAsset","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintForOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeBlueprintFromDelegation","inputs":[{"name":"delegationIndex","type":"uint256","internalType":"uint256"},{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeSlasher","inputs":[{"name":"slasher","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rescueTokens","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"scheduleDelegatorUnstake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleOperatorUnstake","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scheduleWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDelays","inputs":[{"name":"delegationBondLessDelay","type":"uint64","internalType":"uint64"},{"name":"leaveDelegatorsDelay","type":"uint64","internalType":"uint64"},{"name":"leaveOperatorsDelay","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationMode","inputs":[{"name":"mode","type":"uint8","internalType":"enum Types.DelegationMode"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDelegationWhitelist","inputs":[{"name":"delegators","type":"address[]","internalType":"address[]"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorBondToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorCommission","inputs":[{"name":"bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequireAdapters","inputs":[{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTangle","inputs":[{"name":"tangle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForBlueprint","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"slashForService","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startLeaving","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"undelegate","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterRegistered","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"adapter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterRemoved","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetDisabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AssetEnabled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"minOperatorStake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minDelegation","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RequireAdaptersUpdated","inputs":[{"name":"required","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"RoundAdvanced","inputs":[{"name":"round","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","addBlueprintForOperator(address,uint64)":"b9c04c1b","addBlueprintToDelegation(uint256,uint64)":"23cc2700","addSlasher(address)":"68a9f19c","advanceRound()":"1ba9998b","canDelegate(address,address)":"2aa81239","cancelCommissionChange()":"dc71ef30","completeLeaving()":"d1736ba7","currentRound()":"8a19c8bc","delegate(address,uint256)":"026e402b","delegateWithOptions(address,address,uint256,uint8,uint64[])":"fd7d3dbc","delegationBondLessDelay()":"ba05bbf5","deposit()":"d0e30db0","depositAndDelegate(address)":"461cc23b","depositAndDelegateWithOptions(address,address,uint256,uint8,uint64[])":"fbec4861","depositERC20(address,uint256)":"97feb926","depositERC20WithLock(address,uint256,uint8)":"cb15038b","depositWithLock(uint8)":"f38c7c4e","disableAsset(address)":"70807528","enableAsset(address,uint256,uint256,uint256,uint16)":"354ebef9","enableAssetWithAdapter(address,address,uint256,uint256,uint256,uint16)":"f0b52bb4","executeCommissionChange()":"46c9b454","executeDelegatorUnstake()":"007910d0","executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":"bf690206","executeOperatorUnstake()":"b0dfce06","executeWithdraw()":"f8fd9795","getAssetConfig(address)":"6ec3ab67","getCumStakeSeconds(address,(uint8,address))":"c1f1d6fb","getDelegation(address,address)":"15049a5a","getDelegationBlueprints(address,uint256)":"7b9996c5","getDelegationMode(address)":"7bed797d","getDelegations(address)":"31cc13ba","getDeposit(address,address)":"c35082a9","getLocks(address,address)":"0c8833ce","getOperatorBlueprints(address)":"dc972ccc","getOperatorDelegatedStake(address)":"8c5b4ae7","getOperatorDelegatedStakeForAsset(address,(uint8,address))":"20e1b202","getOperatorDelegatorCount(address)":"486398c3","getOperatorDelegators(address)":"a299e298","getOperatorMetadata(address)":"2ee663b8","getOperatorRewardPool(address)":"03587c1d","getOperatorSelfStake(address)":"d673e0b9","getOperatorStake(address)":"e4e88de8","getOperatorStakeForAsset(address,(uint8,address))":"3501b458","getPendingCommissionChange()":"c6b7a813","getPendingUnstakes(address)":"5722d512","getPendingWithdrawals(address)":"f340c0d0","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getTotalDelegation(address)":"fc5e7e09","increaseStake()":"d9e257ef","increaseStakeWithAsset(address,uint256)":"e5e27b6a","isOperator(address)":"6d70f7ae","isOperatorActive(address)":"eb473533","isSlasher(address)":"57601c5d","isWhitelisted(address,address)":"b6b35272","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","meetsStakeRequirement(address,uint256)":"f46913bb","minOperatorStake()":"d775cb61","operatorAt(uint256)":"26142335","operatorBondToken()":"0f157fb9","operatorCommissionBps()":"32273f61","operatorCount()":"7c6f3158","pause()":"8456cb59","previewDelegatorUnstakeShares(address,address,uint256)":"71ed20b6","registerAdapter(address,address)":"d655b92a","registerOperator()":"2acde098","registerOperatorWithAsset(address,uint256)":"e0a5825b","removeAdapter(address)":"585cd34b","removeBlueprintForOperator(address,uint64)":"d106de35","removeBlueprintFromDelegation(uint256,uint64)":"859caa18","removeSlasher(address)":"aac6aa9c","rescueTokens(address,address,uint256)":"cea9d26f","rewardsManager()":"defe2053","roundDuration()":"f7cb789a","scheduleDelegatorUnstake(address,address,uint256)":"fc8a91af","scheduleOperatorUnstake(uint256)":"44aff252","scheduleWithdraw(address,uint256)":"e1ee4bcc","serviceFeeDistributor()":"2e40f7fb","setDelays(uint64,uint64,uint64)":"03780211","setDelegationMode(uint8)":"7202f76a","setDelegationWhitelist(address[],bool)":"c353c1f6","setOperatorBondToken(address)":"84f5ef65","setOperatorCommission(uint16)":"f3c4d8a0","setRequireAdapters(bool)":"7b76fe5e","setRewardsManager(address)":"0a8ddc5e","setServiceFeeDistributor(address)":"fbcc7b3d","setTangle(address)":"bf5274a7","slash(address,uint64,uint16,bytes32)":"ff38b049","slashForBlueprint(address,uint64,uint64,uint16,bytes32)":"614b1d9b","slashForService(address,uint64,uint64,((uint8,address),uint16)[],uint16,bytes32)":"675b3c43","snapshotOperator(address)":"cadd550c","startLeaving()":"87703550","undelegate(address,uint256)":"4d99dd16","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"AdapterRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AdapterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"AssetDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"}],\"name\":\"AssetEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"RequireAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"}],\"name\":\"RoundAdvanced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"addBlueprintToDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"addSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"advanceRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"canDelegate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"completeLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"delegateWithOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"depositAndDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint64[]\",\"name\":\"blueprintIds\",\"type\":\"uint64[]\"}],\"name\":\"depositAndDelegateWithOptions\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositERC20WithLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lockMultiplier\",\"type\":\"uint8\"}],\"name\":\"depositWithLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"disableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"name\":\"enableAssetWithAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeCommissionChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"executeDelegatorUnstakeAndWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"executeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"depositCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentDeposits\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rewardMultiplierBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getCumStakeSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cum\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdate\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"currentStake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getDelegationBlueprints\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getDelegationMode\",\"outputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.BondInfoDelegator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDeposit\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delegatedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Deposit\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"multiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"expiryBlock\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.LockInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlueprints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatedStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorDelegatedStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"delegationCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.OperatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"leavingRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.OperatorMetadata\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRewardPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"totalShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorRewardPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorSelfStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"}],\"name\":\"getOperatorStakeForAsset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingCommissionChange\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"pendingBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingUnstakes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"slashFactorSnapshot\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BondLessRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getPendingWithdrawals\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"requestedRound\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.WithdrawRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashIndex\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getTotalDelegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseStakeWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSlasher\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"meetsStakeRequirement\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minOperatorStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"operatorAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"previewDelegatorUnstakeShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"registerAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerOperatorWithAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintForOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"removeBlueprintFromDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"slasher\",\"type\":\"address\"}],\"name\":\"removeSlasher\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleDelegatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleOperatorUnstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"scheduleWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"delegationBondLessDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveDelegatorsDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leaveOperatorsDelay\",\"type\":\"uint64\"}],\"name\":\"setDelays\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"setDelegationMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"delegators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setDelegationWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setOperatorBondToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"setRequireAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setRewardsManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tangle\",\"type\":\"address\"}],\"name\":\"setTangle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForBlueprint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"slashForService\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"snapshotOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startLeaving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"INTERFACE STRUCTURE: This interface is intentionally comprehensive to maintain backward compatibility. Logically, it can be viewed as composed of these segments: - Operator Functions: registration, staking, blueprint management - Deposit Functions: native/ERC20 deposits with optional locks - Delegation Functions: delegate/undelegate with blueprint selection - Slashing: slash functions and related queries - Asset Management: enable/disable assets, adapters - View Functions: read-only queries for state - Admin Functions: protocol configuration Future versions may split into focused sub-interfaces (e.g., IOperatorManager, IDepositManager, IDelegationManager) for better composability.\",\"kind\":\"dev\",\"methods\":{\"canDelegate(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if delegation is allowed\"}},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"details\":\"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.\",\"params\":{\"operator\":\"Operator to unstake from\",\"receiver\":\"Recipient of the withdrawn assets\",\"requestedRound\":\"Round in which the unstake was scheduled\",\"shares\":\"Shares to unstake (as stored in the underlying bond-less request)\",\"token\":\"Token address (address(0) for native)\"},\"returns\":{\"amount\":\"Actual amount returned (after exchange-rate adjustments)\"}},\"getDelegationMode(address)\":{\"params\":{\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"The current delegation mode\"}},\"isWhitelisted(address,address)\":{\"params\":{\"delegator\":\"Delegator address\",\"operator\":\"Operator address\"},\"returns\":{\"_0\":\"True if whitelisted\"}},\"setDelegationMode(uint8)\":{\"params\":{\"mode\":\"Delegation mode: Disabled (0), Whitelist (1), or Open (2)\"}},\"setDelegationWhitelist(address[],bool)\":{\"params\":{\"approved\":\"True to approve, false to revoke\",\"delegators\":\"Array of delegator addresses to update\"}}},\"title\":\"IMultiAssetDelegation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canDelegate(address,address)\":{\"notice\":\"Check if delegator can delegate to operator\"},\"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)\":{\"notice\":\"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`.\"},\"getCumStakeSeconds(address,(uint8,address))\":{\"notice\":\"F5: Lazy-realized cumulative stake-seconds for an (operator, asset) at the current block. Used by `Payments.billSubscription` for TWAP-fair pricing.\"},\"getDelegationMode(address)\":{\"notice\":\"Get operator's delegation mode\"},\"getOperatorRewardPool(address)\":{\"notice\":\"Get the operator's reward pool for the bond asset\"},\"isWhitelisted(address,address)\":{\"notice\":\"Check if delegator is whitelisted\"},\"setDelegationMode(uint8)\":{\"notice\":\"Set delegation mode for the operator\"},\"setDelegationWhitelist(address[],bool)\":{\"notice\":\"Update whitelist for the operator (batch)\"}},\"notice\":\"Full interface for the multi-asset staking contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IMultiAssetDelegation.sol\":\"IMultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMultiAssetDelegation.sol\":{\"keccak256\":\"0xd270d8b97a8d6d1634cd2b352fc6cda7b772b8983df98c6c599d3d63025d5118\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a2c794ecd4d32e03fc2fb26abbcef9026e2b7dbb8b7b3359375a4097d532c17\",\"dweb:/ipfs/QmNUdQvsXC1k5vPafoRVpmiKynBhWDNpPZXFWrggTUHkos\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xdc06535c50e676023a4bf20afa0530abd4d1502058560117285bae6df8d39787\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ef5c9986ef25e17a01e5a01453b40e3ab36c3388ef55366d99821f434d2442a\",\"dweb:/ipfs/QmZP1z3ZbfPAPfBrvJ62DQBc1SWsjLtFgNZh4JHsgFjvYh\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xfb2ef97b10763e39707cbc18c8898b633ebb606c86532037d6100b6ca89ff6c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e8518686965866b1f88426937acd961ec64bf80b485f7286a8545f4264c0b2\",\"dweb:/ipfs/QmfCmTLrBEibUj9fviu8qFvRp3UhzYyCAeDPBXUVdSKpgi\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x3a1083a9f49ec893bcb4848646f3353d3474b37e1c9ae37fd6661a909dff11a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db06517fcecc9c78f1f2db1f67b73a8b708bdc13c59375ddbf24dc20b41f8c7d\",\"dweb:/ipfs/QmXMSVPiCHcDbpiGcRhQAKCzmXfCPQr4Pt85D6bsifBYKg\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0x928702abef8c3e521c48a818c79ff81fc76bc7be684513f86eb6887283a12b9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69ab84d46c39768c34afeb34133ae8d1d071841d9922c73c65fef75246388dbe\",\"dweb:/ipfs/QmVQBcEPc9Pu5CWoCspSCzUhpW2mLhB1VTyRuYQddBbavL\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0x927513d8b847f67a99d1db6c47571f43c61ee36d5f94116b0e9b569fc400caa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c2cd2beb5884d28d4f9ea17bbfc3626f735fc53e4785e2043566055e5dcc515\",\"dweb:/ipfs/QmaHnz9A2PRvQfpsQUmJRkXHyD9piq4jg4s8tKpbashPzL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"adapter","type":"address","indexed":true}],"type":"event","name":"AdapterRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AdapterRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true}],"type":"event","name":"AssetDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"minOperatorStake","type":"uint256","indexed":false},{"internalType":"uint256","name":"minDelegation","type":"uint256","indexed":false}],"type":"event","name":"AssetEnabled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"bool","name":"required","type":"bool","indexed":false}],"type":"event","name":"RequireAdaptersUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64","indexed":true}],"type":"event","name":"RoundAdvanced","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"addBlueprintToDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addSlasher"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"advanceRound"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"canDelegate","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"cancelCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"completeLeaving"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"delegateWithOptions"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"payable","type":"function","name":"depositAndDelegate"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint64[]","name":"blueprintIds","type":"uint64[]"}],"stateMutability":"payable","type":"function","name":"depositAndDelegateWithOptions"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"depositERC20WithLock"},{"inputs":[{"internalType":"enum Types.LockMultiplier","name":"lockMultiplier","type":"uint8"}],"stateMutability":"payable","type":"function","name":"depositWithLock"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"enableAssetWithAdapter"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeCommissionChange"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstake"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"address","name":"receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"executeDelegatorUnstakeAndWithdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeOperatorUnstake"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"executeWithdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetConfig","outputs":[{"internalType":"struct Types.AssetConfig","name":"","type":"tuple","components":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"minOperatorStake","type":"uint256"},{"internalType":"uint256","name":"minDelegation","type":"uint256"},{"internalType":"uint256","name":"depositCap","type":"uint256"},{"internalType":"uint256","name":"currentDeposits","type":"uint256"},{"internalType":"uint16","name":"rewardMultiplierBps","type":"uint16"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getCumStakeSeconds","outputs":[{"internalType":"uint256","name":"cum","type":"uint256"},{"internalType":"uint64","name":"lastUpdate","type":"uint64"},{"internalType":"uint256","name":"currentStake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDelegationBlueprints","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegationMode","outputs":[{"internalType":"enum Types.DelegationMode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegations","outputs":[{"internalType":"struct Types.BondInfoDelegator[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getDeposit","outputs":[{"internalType":"struct Types.Deposit","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"delegatedAmount","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getLocks","outputs":[{"internalType":"struct Types.LockInfo[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Types.LockMultiplier","name":"multiplier","type":"uint8"},{"internalType":"uint64","name":"expiryBlock","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlueprints","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorDelegatedStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorDelegators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorMetadata","outputs":[{"internalType":"struct Types.OperatorMetadata","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint32","name":"delegationCount","type":"uint32"},{"internalType":"enum Types.OperatorStatus","name":"status","type":"uint8"},{"internalType":"uint64","name":"leavingRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRewardPool","outputs":[{"internalType":"struct Types.OperatorRewardPool","name":"","type":"tuple","components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]}],"stateMutability":"view","type":"function","name":"getOperatorStakeForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPendingCommissionChange","outputs":[{"internalType":"uint16","name":"pendingBps","type":"uint16"},{"internalType":"uint64","name":"executeAfter","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingUnstakes","outputs":[{"internalType":"struct Types.BondLessRequest[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8"},{"internalType":"uint256","name":"slashFactorSnapshot","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingWithdrawals","outputs":[{"internalType":"struct Types.WithdrawRequest[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedRound","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashIndex","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalDelegation","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"increaseStake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseStakeWithAsset"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isSlasher","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"}],"stateMutability":"view","type":"function","name":"meetsStakeRequirement","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minOperatorStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"operatorAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function","name":"previewDelegatorUnstakeShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAdapter"},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorWithAsset"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAdapter"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintForOperator"},{"inputs":[{"internalType":"uint256","name":"delegationIndex","type":"uint256"},{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"removeBlueprintFromDelegation"},{"inputs":[{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeSlasher"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rescueTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleDelegatorUnstake"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleOperatorUnstake"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"scheduleWithdraw"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"delegationBondLessDelay","type":"uint64"},{"internalType":"uint64","name":"leaveDelegatorsDelay","type":"uint64"},{"internalType":"uint64","name":"leaveOperatorsDelay","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setDelays"},{"inputs":[{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationMode"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setDelegationWhitelist"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorBondToken"},{"inputs":[{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorCommission"},{"inputs":[{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setRequireAdapters"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsManager"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"address","name":"tangle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTangle"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForBlueprint","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"slashForService","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"snapshotOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startLeaving"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"undelegate"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"canDelegate(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if delegation is allowed"}},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"details":"Convenience helper for integrations (e.g. ERC7540 liquid delegation vaults) to avoid a separate scheduleWithdraw/executeWithdraw flow after bond-less delay has already elapsed.","params":{"operator":"Operator to unstake from","receiver":"Recipient of the withdrawn assets","requestedRound":"Round in which the unstake was scheduled","shares":"Shares to unstake (as stored in the underlying bond-less request)","token":"Token address (address(0) for native)"},"returns":{"amount":"Actual amount returned (after exchange-rate adjustments)"}},"getDelegationMode(address)":{"params":{"operator":"Operator address"},"returns":{"_0":"The current delegation mode"}},"isWhitelisted(address,address)":{"params":{"delegator":"Delegator address","operator":"Operator address"},"returns":{"_0":"True if whitelisted"}},"setDelegationMode(uint8)":{"params":{"mode":"Delegation mode: Disabled (0), Whitelist (1), or Open (2)"}},"setDelegationWhitelist(address[],bool)":{"params":{"approved":"True to approve, false to revoke","delegators":"Array of delegator addresses to update"}}},"version":1},"userdoc":{"kind":"user","methods":{"canDelegate(address,address)":{"notice":"Check if delegator can delegate to operator"},"executeDelegatorUnstakeAndWithdraw(address,address,uint256,uint64,address)":{"notice":"Execute a specific matured unstake request and withdraw the resulting assets to `receiver`."},"getCumStakeSeconds(address,(uint8,address))":{"notice":"F5: Lazy-realized cumulative stake-seconds for an (operator, asset) at the current block. Used by `Payments.billSubscription` for TWAP-fair pricing."},"getDelegationMode(address)":{"notice":"Get operator's delegation mode"},"getOperatorRewardPool(address)":{"notice":"Get the operator's reward pool for the bond asset"},"isWhitelisted(address,address)":{"notice":"Check if delegator is whitelisted"},"setDelegationMode(uint8)":{"notice":"Set delegation mode for the operator"},"setDelegationWhitelist(address[],bool)":{"notice":"Update whitelist for the operator (batch)"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/IMultiAssetDelegation.sol":"IMultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMultiAssetDelegation.sol":{"keccak256":"0xd270d8b97a8d6d1634cd2b352fc6cda7b772b8983df98c6c599d3d63025d5118","urls":["bzz-raw://1a2c794ecd4d32e03fc2fb26abbcef9026e2b7dbb8b7b3359375a4097d532c17","dweb:/ipfs/QmNUdQvsXC1k5vPafoRVpmiKynBhWDNpPZXFWrggTUHkos"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xdc06535c50e676023a4bf20afa0530abd4d1502058560117285bae6df8d39787","urls":["bzz-raw://5ef5c9986ef25e17a01e5a01453b40e3ab36c3388ef55366d99821f434d2442a","dweb:/ipfs/QmZP1z3ZbfPAPfBrvJ62DQBc1SWsjLtFgNZh4JHsgFjvYh"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xfb2ef97b10763e39707cbc18c8898b633ebb606c86532037d6100b6ca89ff6c9","urls":["bzz-raw://81e8518686965866b1f88426937acd961ec64bf80b485f7286a8545f4264c0b2","dweb:/ipfs/QmfCmTLrBEibUj9fviu8qFvRp3UhzYyCAeDPBXUVdSKpgi"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x3a1083a9f49ec893bcb4848646f3353d3474b37e1c9ae37fd6661a909dff11a9","urls":["bzz-raw://db06517fcecc9c78f1f2db1f67b73a8b708bdc13c59375ddbf24dc20b41f8c7d","dweb:/ipfs/QmXMSVPiCHcDbpiGcRhQAKCzmXfCPQr4Pt85D6bsifBYKg"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0x928702abef8c3e521c48a818c79ff81fc76bc7be684513f86eb6887283a12b9d","urls":["bzz-raw://69ab84d46c39768c34afeb34133ae8d1d071841d9922c73c65fef75246388dbe","dweb:/ipfs/QmVQBcEPc9Pu5CWoCspSCzUhpW2mLhB1VTyRuYQddBbavL"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0x927513d8b847f67a99d1db6c47571f43c61ee36d5f94116b0e9b569fc400caa3","urls":["bzz-raw://5c2cd2beb5884d28d4f9ea17bbfc3626f735fc53e4785e2043566055e5dcc515","dweb:/ipfs/QmaHnz9A2PRvQfpsQUmJRkXHyD9piq4jg4s8tKpbashPzL"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file diff --git a/bindings/abi/ITangle.json b/bindings/abi/ITangle.json index 57b7dc71..f01d14f6 100644 --- a/bindings/abi/ITangle.json +++ b/bindings/abi/ITangle.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c\",\"dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0","urls":["bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c","dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"lastBilledCumStake","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastBilledCumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d\",\"dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"lastBilledCumStake","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9","urls":["bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d","dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file diff --git a/bindings/abi/ITangleFull.json b/bindings/abi/ITangleFull.json index 58724aa5..4628a608 100644 --- a/bindings/abi/ITangleFull.json +++ b/bindings/abi/ITangleFull.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c\",\"dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x68d3acc0ec9cc7017ea9c95314ef820fce70818232f32f8d8cf03102edc92ff0","urls":["bzz-raw://a501d51f89b4b71b1e529fc746bed2fccfb82f98fc21b9ced022637a757b616c","dweb:/ipfs/QmT6WyjhRqoE67JpxoTWtTxPJMujzi8TXfa8JESmwGtvor"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"lastBilledCumStake","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastBilledCumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d\",\"dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"lastBilledCumStake","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9","urls":["bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d","dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file diff --git a/bindings/abi/ITangleSlashing.json b/bindings/abi/ITangleSlashing.json index b0a1a97d..6ef5851c 100644 --- a/bindings/abi/ITangleSlashing.json +++ b/bindings/abi/ITangleSlashing.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","disputeSlash(uint64,string)":"77380c74","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","getExecutableSlashes(uint64,uint64)":"110f829b","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","pendingDisputeBondRefund(address)":"8c2f4ee4","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}}},\"title\":\"ITangleSlashing\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"}},\"notice\":\"Slashing interface for Tangle protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangleSlashing.sol\":\"ITangleSlashing\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"}],"devdoc":{"kind":"dev","methods":{"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangleSlashing.sol":"ITangleSlashing"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file +{"abi":[{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","disputeSlash(uint64,string)":"77380c74","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","getExecutableSlashes(uint64,uint64)":"110f829b","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","pendingDisputeBondRefund(address)":"8c2f4ee4","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}}},\"title\":\"ITangleSlashing\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"}},\"notice\":\"Slashing interface for Tangle protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangleSlashing.sol\":\"ITangleSlashing\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"}],"devdoc":{"kind":"dev","methods":{"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangleSlashing.sol":"ITangleSlashing"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file diff --git a/bindings/abi/MultiAssetDelegation.json b/bindings/abi/MultiAssetDelegation.json index 714ed14a..a9f8b518 100644 --- a/bindings/abi/MultiAssetDelegation.json +++ b/bindings/abi/MultiAssetDelegation.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ASSET_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"BPS_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMISSION_CHANGE_DELAY","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TANGLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_ASSETS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_SHARES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"clearFacetSelectors","inputs":[{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"facetForSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAccumulatedDust","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAssetAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorSlashFactor","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"lostAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getSnapshot","inputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorSnapshot","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"totalDelegated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"nativeMinOperatorStake","type":"uint256","internalType":"uint256"},{"name":"nativeMinDelegation","type":"uint256","internalType":"uint256"},{"name":"_operatorCommissionBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastRoundAdvance","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nativeEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nextSlashId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerFacet","inputs":[{"name":"facet","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerFacetSelectors","inputs":[{"name":"facet","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requireAdapters","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"resetPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"slashHistory","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"DustAccumulated","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalDust","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DustSwept","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FacetRegistered","inputs":[{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FacetSelectorCleared","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"FacetSelectorSet","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorDelegationModeSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"mode","type":"uint8","indexed":false,"internalType":"enum Types.DelegationMode"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorWhitelistUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PendingSlashCountReset","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashDecremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashIncremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotAContract","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SelectorAlreadyRegistered","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"existingFacet","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523461003e5761001161004d565b610019610043565b61447c61030782396080518181816138a70152818161390c0152613abb015261447c90f35b610049565b60405190565b5f80fd5b61005561005f565b61005d61022a565b565b610067610069565b565b610071610073565b565b61007b61007d565b565b610085610087565b565b61008f610091565b565b61009961009b565b565b6100a36100a5565b565b6100ad6100af565b565b6100b76100b9565b565b6100c16100c3565b565b6100cb6100cd565b565b6100d56100d7565b565b6100df6100e1565b565b6100e961012d565b565b60018060a01b031690565b90565b61010d610108610112926100eb565b6100f6565b6100eb565b90565b61011e906100f9565b90565b61012a90610115565b90565b61013630610121565b608052565b60401c90565b60ff1690565b6101536101589161013b565b610141565b90565b6101659054610147565b90565b5f0190565b5f1c90565b60018060401b031690565b61018961018e9161016d565b610172565b90565b61019b905461017d565b90565b60018060401b031690565b5f1b90565b906101bf60018060401b03916101a9565b9181191691161790565b6101dd6101d86101e29261019e565b6100f6565b61019e565b90565b90565b906101fd6101f8610204926101c9565b6101e5565b82546101ae565b9055565b6102119061019e565b9052565b9190610228905f60208501940190610208565b565b6102326102e2565b61023d5f820161015b565b6102c65761024c5f8201610191565b61026461025e60018060401b0361019e565b9161019e565b0361026d575b50565b610280905f60018060401b0391016101e8565b60018060401b036102bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916102b4610043565b91829182610215565b0390a15f61026a565b5f63f92ee8a960e01b8152806102de60048201610168565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:181:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;1313:53;;;:::i;:::-;;;:::i;:::-;:::o;390:3323:111:-;;;:::i;:::-;:::o;593:16751:178:-;;;:::i;:::-;:::o;833:35158:185:-;;;:::i;:::-;:::o;807:15535:184:-;;;:::i;:::-;:::o;749:45049:176:-;;;:::i;:::-;:::o;622:19465:182:-;;;:::i;:::-;:::o;427:22555:177:-;;;:::i;:::-;:::o;1094:3411:69:-;;;:::i;:::-;:::o;701:3153:68:-;;;:::i;:::-;:::o;2090:6192:48:-;;;:::i;:::-;:::o;769:414:71:-;;;:::i;:::-;:::o;422:447:40:-;;;:::i;:::-;:::o;226:3116:1:-;;;:::i;:::-;:::o;688:505:66:-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5611:59:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5611::o;1033:3847:181:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;7711:422:58:-;7859:26;;:::i;:::-;7900:15;;:1;:15;;:::i;:::-;7896:76;;7985:14;;:1;:14;;:::i;:::-;:34;;1033:3847:181;;;;;7985:34:58;:::i;:::-;;;:::i;:::-;;7981:146;;7711:422;;:::o;7981:146::-;8035:33;1033:3847:181;8035:14:58;1033:3847:181;;;;;8035:1:58;:14;:33;:::i;:::-;1033:3847:181;;;;;8087:29:58;;;;;:::i;:::-;;;;;;:::i;:::-;;;;7981:146;;;7896:76;7938:23;;;;;;;;;;;;:::i;:::-;;;;8737:170;8837:64;8737:170;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:181:-:0;;;;;;;;;-1:-1:-1;1033:3847:181;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;3981:30:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4797:70:185:-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;1033:3847:181:-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2014:52:177:-;2060:6;;;:::i;:::-;2014:52;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;5347:35:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2192:53:177:-;2239:6;;;:::i;:::-;2192:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1961:47:177:-;2002:6;;;:::i;:::-;1961:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4756:33:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;5194:72:185:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;3036:64:177;3075:25;3036:64;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2072:53:177:-;2119:6;;;:::i;:::-;2072:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3188:62:177:-;3226:24;3188:62;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2970:60:177:-;3007:23;2970:60;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;6608:25:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1751:48:177:-;1792:7;;;:::i;:::-;1751:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1566:44:177:-;1607:3;;;:::i;:::-;1566:44;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3785:26:177:-;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4917:45:185:-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5041:70:185:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1698:47:177:-;1738:7;;;:::i;:::-;1698:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2317:49:48:-;2362:4;;;:::i;:::-;2317:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3106:76:177:-;3151:31;3106:76;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2131:55:177:-;2180:6;;;:::i;:::-;2131:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1059:40:177:-;1095:4;;;:::i;:::-;1059:40;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:59:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;7488:27:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1616:42:177:-;1657:1;;;:::i;:::-;1616:42;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4559:37:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1805:50:177:-;1848:7;;;:::i;:::-;1805:50;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5528:55:177:-;5577:6;;;:::i;:::-;5528:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;4663:34:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2437:46:177:-;2479:4;;;:::i;:::-;2437:46;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1105:48:177:-;1147:6;;;:::i;:::-;1105:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1861:49:177:-;1902:8;;;:::i;:::-;1861:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3888:27:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;3443:202:48:-;3528:4;;:::i;:::-;3551:11;;:47;;3566:32;;;3551:47;:::i;:::-;;;:::i;:::-;;:87;;;;;3443:202;3544:94;;:::o;3551:87::-;3602:36;3626:11;;3602:36;:::i;:::-;3551:87;;;1033:3847:181;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;18896:223:177:-;19022:41;18896:223;19022:30;:41;18896:223;18986:7;;:::i;:::-;19022:20;;:30;:::i;:::-;:41;:::i;:::-;;:::i;:::-;19080:6;:11;;19090:1;19080:11;:::i;:::-;;;:::i;:::-;;:32;;;;19094:9;;;:::i;:::-;19080:32;19073:39;:::o;19080:32::-;;;1033:3847:181;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;986:179:111:-;1122:36;986:179;1122:36;986:179;;;:::i;:::-;1148:9;1122:36;:::i;:::-;;;:::i;:::-;986:179::o;1033:3847:181:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4759:191:48:-;4919:24;:14;:24;4759:191;4824:7;;:::i;:::-;4876:26;4919:8;4876:26;;:::i;:::-;4919:8;:14;:::i;:::-;:24;;:::i;:::-;4912:31;:::o;3149:76::-;;3217:1;3149:76;3202:4;5320:18;5333:4;5320:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5246:136::-;;5350:25;5246:136;5350:25;:::i;:::-;;5246:136::o;:::-;;;;;:::i;:::-;:::o;6348:245::-;;6441:18;:34;;6463:12;;:::i;:::-;6441:34;:::i;:::-;;;:::i;:::-;;6437:102;;6549:37;6561:4;6549:37;:::i;:::-;;6348:245::o;6437:102::-;6498:30;;;;;;;;;;;;:::i;:::-;;;;1033:3847:181;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;668:256:111;;;:::i;:::-;797:34;;:32;:22;813:5;797:22;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;867:12;797:34;;;;;668:256;766:65;860:5;867:12;:::i;:::-;895:22;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;668:256::o;797:34::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;11796:122:184:-;11888:23;;11796:122;11862:7;;:::i;:::-;11888:16;;:23;:::i;:::-;;:::i;:::-;11881:30;:::o;2624:62:59:-;;2678:1;2624:62;;;:::i;:::-;2678:1;:::i;:::-;2624:62::o;4161:214::-;;4363:4;4161:214;4294:17;;;:::i;:::-;4363:4;:::i;:::-;4161:214::o;:::-;;;;;:::i;:::-;:::o;2892:72::-;2956:1;2892:72;;;:::i;:::-;2956:1;:::i;:::-;2892:72;:::o;1033:3847:181:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;763:114:19:-;811:66;;;:::i;:::-;763:114;:::o;3708:134:59:-;3803:32;;;:::i;:::-;3796:39;:::o;3708:134::-;3777:7;;;:::i;:::-;;:::i;:::-;3708:134;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:68:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;1033:3847:181:-;;;:::o;30628:117:185:-;30717:21;;30628:117;30692:6;;:::i;:::-;30717:11;;:21;:::i;:::-;;:::i;:::-;30710:28;:::o;31184:162::-;31301:38;31184:162;31301:28;:38;31184:162;31276:6;;:::i;:::-;31301:17;;:28;:::i;:::-;:38;:::i;:::-;;:::i;:::-;31294:45;:::o;1033:3847:181:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;17225:117:178:-;17314:21;;17225:117;17288:7;;:::i;:::-;17314:14;;:21;:::i;:::-;;:::i;:::-;17307:28;:::o;1560:129:111:-;1652:30;1560:129;1626:7;;:::i;:::-;1673:8;1652:30;:::i;:::-;1645:37;:::o;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;3732:207:48:-;3901:31;3732:207;3901:22;:14;:31;3732:207;3809:4;;:::i;:::-;3858:26;;;;:::i;:::-;3901:8;:14;:::i;:::-;:22;:31;:::i;:::-;;:::i;:::-;3894:38;:::o;7409:147:185:-;7513:36;;7409:147;7488:6;;:::i;:::-;7513:26;;:36;:::i;:::-;;:::i;:::-;7506:43;:::o;1033:3847:181:-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29116:783:185:-;;;;;29304:59;29332:31;29270:18;;:::i;:::-;29332:12;:22;:12;29345:8;29332:22;;:::i;:::-;:31;:::i;:::-;29304:59;:::i;:::-;29377:6;:12;;:6;:12;;:::i;:::-;:17;;29393:1;29377:17;:::i;:::-;;;:::i;:::-;;29373:31;;29500:9;29464:74;29500:9;29511:8;29521:16;;:6;:16;;:::i;:::-;29464:74;;:::i;:::-;29552:15;;:20;;29571:1;29552:20;:::i;:::-;;;:::i;:::-;;29548:34;;29676:25;;:6;:25;;:::i;:::-;:52;;29704:24;;:6;:24;;:::i;:::-;29676:52;:::i;:::-;;;:::i;:::-;;29672:221;;29116:783;;;:::o;29672:221::-;29842:40;29763:6;;;;:52;:6;29791:24;;29763:25;;29843:26;29763:6;:25;;:::i;:::-;29791:6;:24;;:::i;:::-;29763:52;;:::i;:::-;29843:26;;:::i;:::-;29873:9;;:::i;:::-;29842:40;;:::i;:::-;29672:221;;;;;29548:34;29581:1;;;;29574:8;29581:1;29574:8;:::i;:::-;;:::o;29373:31::-;29403:1;;;;;29396:8;29403:1;29396:8;:::i;:::-;;:::o;1033:3847:181:-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;30792:156:185:-;30903:38;30792:156;30910:22;:31;30792:156;30873:18;;:::i;:::-;30910:12;;:22;:::i;:::-;:31;:::i;:::-;30903:38;:::i;:::-;;:::o;1033:3847:181:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;33897:154:185:-;34012:32;33897:154;34019:15;:25;33897:154;33971:29;;:::i;:::-;34019:8;;:15;:::i;:::-;:25;:::i;:::-;34012:32;:::i;:::-;;:::o;31602:170::-;31723:42;31602:170;31723:32;:42;31602:170;31698:6;;:::i;:::-;31723:19;;:32;:::i;:::-;:42;:::i;:::-;;:::i;:::-;31716:49;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:58:-;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1033:3847:181;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1033:3847:181;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;826:56:93:-;876:6;;;:::i;:::-;826:56;:::o;876:6::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1071:52::-;1121:2;;;:::i;:::-;1071:52;:::o;1121:2::-;;;;:::o;:::-;;;1033:3847:181;1121:2:93;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1191:51::-;1240:2;;;:::i;:::-;1191:51;:::o;1648:1453:181:-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2003:18;;:::i;:::-;2023:5;1992:37;;;:::i;:::-;;2050:10;;:::i;:::-;2062:5;2039:29;;;:::i;:::-;;2089:18;;:::i;:::-;2109:5;2078:37;;;:::i;:::-;;2204:22;2236:1;2228:10;;;:::i;:::-;2192:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2181:59;;;:::i;:::-;2319:4;;2355:22;2406:19;2451:1;2483;2588:15;;;:::i;:::-;2581:23;;;:::i;:::-;2278:337;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2250:13;2264:10;2250:25;;;:::i;:::-;:365;;;;:::i;:::-;2641:4;2625:20;;;;:::i;:::-;2656:46;;;;:::i;:::-;2727:1;2712:16;;;:::i;:::-;;;;;:::i;:::-;2754:37;;:::i;:::-;2738:53;;;;:::i;:::-;2919:37;;:::i;:::-;2893:63;;;;:::i;:::-;2989:37;;:::i;:::-;2966:60;;;;:::i;:::-;3058:36;;:::i;:::-;3036:58;;;;:::i;:::-;1648:1453::o;:::-;;;;;;;:::i;:::-;:::o;3149:76:48:-;;3217:1;3149:76;3202:4;5737:18;5750:4;5737:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5662:138::-;;5767:26;5662:138;5767:26;:::i;:::-;;5662:138::o;:::-;;;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;1220:285:111:-;;;;;;:::i;:::-;1343:13;1355:1;1343:13;:::i;:::-;1380:3;1358:1;:20;;1362:16;:9;;:16;;:::i;:::-;1358:20;:::i;:::-;;;:::i;:::-;;;;;1380:3;1422:9;:12;;;:9;;1432:1;1422:12;;:::i;:::-;;:::i;:::-;;:::i;:::-;1475;;:9;;1485:1;1475:12;;:::i;:::-;;:::i;:::-;1454:34;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1380:3;:::i;:::-;1343:13;;1358:20;;;;;1220:285::o;3149:76:48:-;;3217:1;3149:76;3202:4;4751:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3217:1;:::i;:::-;3149:76::o;4660:218:181:-;4773:44;4812:5;4773:36;:26;4800:8;4773:36;;:::i;:::-;:44;:::i;:::-;4832:39;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;4660:218::o;:::-;;;;;:::i;:::-;:::o;4056:63::-;;:::i;1035:146:71:-;1111:4;;:::i;:::-;1134:11;:40;;1149:25;;;1134:40;:::i;:::-;;;:::i;:::-;;1127:47;:::o;3149:76:48:-;3202:4;3180:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3149:76::o;3107:88:181:-;;;:::i;:::-;:::o;1033:3847::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;1894:602:111:-;;;1987:5;:19;;1996:10;2004:1;1996:10;:::i;:::-;1987:19;:::i;:::-;;;:::i;:::-;;1983:45;;2042:5;:17;:22;;2063:1;2042:22;:::i;:::-;;;:::i;:::-;;2038:54;;2108:13;2120:1;2108:13;:::i;:::-;2145:3;2123:1;:20;;2127:16;:9;:16;:::i;:::-;2123:20;:::i;:::-;;;:::i;:::-;;;;;2183:34;2204:12;;:9;2214:1;2204:12;;:::i;:::-;;:::i;:::-;2183:34;:::i;:::-;2235:8;:22;;2247:10;2255:1;2247:10;:::i;:::-;2235:22;:::i;:::-;;;:::i;:::-;;;:43;;;2145:3;2231:138;;2403:9;2145:3;2403:9;2417:5;2403:12;;:9;2413:1;2403:12;;:::i;:::-;;:::i;:::-;2417:5;;;:::i;:::-;2459:12;;:9;2469:1;2459:12;;:::i;:::-;;:::i;:::-;2473:5;2442:37;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2145:3;:::i;:::-;2108:13;;2231:138;2331:12;;:9;;:12;:::i;:::-;;:::i;:::-;2345:8;:::i;2235:43::-;2261:8;;:17;;2273:5;2261:17;:::i;:::-;;;:::i;:::-;;;2235:43;;2123:20;;;;;1894:602::o;2038:54::-;2086:5;;:::i;1983:45::-;;:::i;2787:177:48:-;2887:71;2787:177;:::o;4148:103::-;4231:12;4148:103;4231:12;;:::i;:::-;;;:::i;:::-;4148:103::o;7270:387::-;7347:4;;:::i;:::-;7396:26;;;:::i;:::-;7436:23;7437:22;7445:4;7451:7;7437:22;;:::i;:::-;7436:23;;:::i;:::-;7432:219;;;;7475:38;7509:4;7475:31;:22;:14;7509:4;;7475:1;:8;7484:4;7475:14;;:::i;:::-;:22;7498:7;7475:31;;:::i;:::-;:38;:::i;:::-;7550:7;7559:12;;:::i;:::-;7532:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;7593:4;7586:11;:::o;7432:219::-;7635:5;;;;7628:12;:::o;887:96:66:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7892:388:48:-;7970:4;;:::i;:::-;8019:26;;;:::i;:::-;8059:22;8067:4;8073:7;8059:22;;:::i;:::-;8055:219;;;;8097:39;8131:5;8097:31;:22;:14;8131:5;;8097:1;:8;8106:4;8097:14;;:::i;:::-;:22;8120:7;8097:31;;:::i;:::-;:39;:::i;:::-;8173:7;8182:12;;:::i;:::-;8155:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;8216:4;8209:11;:::o;8055:219::-;8258:5;;;;8251:12;:::o;1033:3847:181:-;;;;:::i;:::-;;:::o;4603:312:59:-;4675:13;4683:4;4675:13;:::i;:::-;:23;;4692:6;4675:23;:::i;:::-;;;:::i;:::-;;:120;;;;4603:312;4658:251;;4603:312::o;4658:251::-;4869:29;;;;;;;;;;;;:::i;:::-;;;;4675:120;4753:32;;;:::i;:::-;:42;;4789:6;4753:42;:::i;:::-;;;:::i;:::-;;;4675:120;;3149:76:48;;3202:4;4368:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3149:76::o;4305:78:181:-;;;;:::i;:::-;:::o;1033:3847::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6057:538:59:-;;;6156:52;;:50;:36;6174:17;6156:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6057:538;6152:437;;;;;;;;;;;;;;6057:538::o;6152:437::-;6518:60;6560:17;6518:60;;;;;;;;;;;;;:::i;:::-;;;;6152:437;6250:4;;:40;;6258:32;;:::i;:::-;6250:40;:::i;:::-;;;:::i;:::-;;6246:120;;6428:4;6409:17;;;6428:4;:::i;:::-;6152:437;;6246:120;6317:34;6346:4;6317:34;;;;;;;;;;;;;:::i;:::-;;;;6156:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5032:213;5098:13;5106:4;5098:13;:::i;:::-;:23;;5115:6;5098:23;:::i;:::-;;;:::i;:::-;;5094:145;;5032:213::o;5094:145::-;5199:29;4869;;;5199;;;;;;;;:::i;:::-;;;;1147:162:68;1237:66;1147:162;:::o;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;3201:139::-;3306:27;;3201:139;3280:7;;:::i;:::-;3306:17;;:27;:::i;:::-;;:::i;:::-;3299:34;:::o;1033:3847::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29905:667:185:-;;;;30118:71;30166:23;30083:19;;:::i;:::-;30166:12;;:23;:::i;:::-;30118:71;:::i;:::-;30227:11;:18;:11;:18;:::i;:::-;30272:1;30260:13;30272:1;30260:13;:::i;:::-;;30275:1;:21;;30279:17;30275:21;:::i;:::-;;;:::i;:::-;;;;;30313:50;30349:14;:11;30361:1;30349:14;;:::i;:::-;;30313:50;:::i;:::-;30381:10;;:1;:10;;:::i;:::-;:22;;30395:8;30381:22;:::i;:::-;;;:::i;:::-;;:58;;;30260:13;30377:120;;30260:13;30538:3;;;;:::i;:::-;30260:13;;30377:120;30538:3;30474:1;;:8;;30459:23;30474:1;:8;;:::i;:::-;30459:23;;:::i;:::-;30377:120;;;;30381:58;30418:1;30407:19;;30418:7;:1;:7;30407:19;:::i;:::-;;:::i;:::-;:32;;30430:9;30407:32;:::i;:::-;;;:::i;:::-;;30381:58;;30275:21;;;;;;;;29905:667::o;8737:170:58:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2970:67:59:-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;:::o;3231:65:48:-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:68:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2684:111:69:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;16492:204:177:-;16561:7;;:::i;:::-;16664:5;16653:35;16676:11;;16664:10;;:5;:10;;:::i;:::-;16676:5;:11;;:::i;:::-;16653:35;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16643:46;;;;:::i;:::-;;;:::i;:::-;;16636:53;:::o;1033:3847:181:-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;3484:118::-;3561:34;3568:27;3561:34;3484:118;3568:17;:27;:::i;:::-;3561:34;:::i;:::-;3484:118::o;1695:193:111:-;1758:29;1033:3847:181;;;1779:7:111;;;1758:29;:::i;:::-;1801:5;:19;;1810:10;1818:1;1810:10;:::i;:::-;1801:19;:::i;:::-;;;:::i;:::-;;1875:5;1797:56;1033:3847:181;;;1845:7:111;;;;:::i;3608:107:181:-;3678:30;;;;;;;;;;;;:::i;:::-;;;;3721:127;3805:36;3721:127;3805:36;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3854:196::-;3976:67;;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3346:132::-;3436:27;:35;3346:132;3436:17;;:27;:::i;:::-;:35;:::i;:::-;3346:132::o;1033:3847::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4381:197:48:-;;4468:23;4469:22;4477:4;4483:7;4469:22;;:::i;:::-;4468:23;;:::i;:::-;4464:108;;4381:197;;:::o;4464:108::-;4514:47;;;;;;;;;;;;;;:::i;:::-;;;;1441:138:19;1493:7;;:::i;:::-;1546:19;1519:53;;:47;1546:19;;:::i;:::-;1519:47;:::i;:::-;:53;;:::i;:::-;1512:60;:::o;2264:344::-;;2374:17;;;:::i;:::-;2425;2407:36;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2458:11;:4;:11;:::i;:::-;:15;;2472:1;2458:15;:::i;:::-;;;:::i;:::-;;2454:148;;;;2489:53;2518:17;2489:53;:::i;:::-;;2454:148;2264:344::o;2454:148::-;;;;;:::i;:::-;;;7084:141:58;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;;;;;;;;;;;:::i;:::-;;;;6893:76;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:68:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1910:40:69:-;1949:1;;;:::i;:::-;1910:40;:::o;2801:183::-;2954:23;2916:28;;:::i;:::-;2954:9;2966:11;;:::i;:::-;2954:1;:9;:23;:::i;:::-;2801:183::o;:::-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;;;;;;;;:::i;:::-;:::o;4161:138::-;4250:42;4161:138;4250:42;;;;;;;;;;;;;:::i;:::-;;;;2694:388:111;2750:326;2694:388;;2750:326;;;;;;;;;;;;;;;;;;;;;;;;1899:163:34;;:::o;1671:281:19:-;1748:17;:29;:34;;1781:1;1748:34;:::i;:::-;;;:::i;:::-;;1744:119;;1872:73;1928:17;1872:53;:47;1899:19;;:::i;:::-;1872:47;:::i;:::-;:53;:73;:::i;:::-;1671:281::o;1744:119::-;1805:47;1834:17;1805:47;6518:60:59;;;;;;1805:47:19;;;;;;:::i;:::-;;;;6113:122;6163:9;:13;;6175:1;6163:13;:::i;:::-;;;:::i;:::-;;6159:70;;6113:122::o;6159:70::-;6199:19;;;;;;;;;;;;:::i;:::-;;;;1033:3847:181;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;3900:253:29;4049:25;3900:253;4091:55;3900:253;3983:12;;:::i;:::-;4049:6;;4069:4;4049:25;;;;;;;;;;;:::i;:::-;4118:6;4126:7;4135:10;4091:55;;:::i;:::-;4084:62;:::o;8487:120:58:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;2395:183:69:-;2499:73;2395:183;:::o;4421:582:29:-;;4593:8;4421:582;4565:12;;:::i;:::-;4594:7;4593:8;;:::i;:::-;4589:408;;;;4625:10;;:::i;4589:408::-;4841:17;:10;:17;:::i;:::-;:22;;4862:1;4841:22;:::i;:::-;;;:::i;:::-;;:49;;;4589:408;4837:119;;4976:10;4969:17;:::o;4837:119::-;4917:24;4934:6;4917:24;;;;;;;;;;;;;:::i;:::-;;;;4841:49;4867:6;;:18;:23;;4889:1;4867:23;:::i;:::-;;;:::i;:::-;;4841:49;;5543:487;5674:17;:10;:17;:::i;:::-;:21;;5694:1;5674:21;:::i;:::-;;;:::i;:::-;;5670:354;;;;5799:158;;;;;;5670:354;5994:19;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{},"immutableReferences":{"17075":[{"start":14503,"length":32},{"start":14604,"length":32},{"start":15035,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","ASSET_MANAGER_ROLE()":"a4b32de8","BPS_DENOMINATOR()":"e1a45218","COMMISSION_CHANGE_DELAY()":"d45ff582","DEFAULT_ADMIN_ROLE()":"a217fddf","LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MIN_LOCK_AMOUNT()":"dd764abf","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","PRECISION()":"aaf5eb68","SLASHER_ROLE()":"5095af64","TANGLE_ROLE()":"602356e3","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","VIRTUAL_ASSETS()":"b6608409","VIRTUAL_SHARES()":"88c47f68","blueprintSlashCount(uint64,address)":"4e9c929a","clearFacetSelectors(bytes4[])":"e07dec29","currentRound()":"8a19c8bc","delegationBondLessDelay()":"ba05bbf5","facetForSelector(bytes4)":"90837ff4","getAccumulatedDust(address)":"49147411","getAssetAdapter(address)":"8a7fe60f","getOperatorSlashFactor(address,bytes32)":"12d91c88","getPendingSlashCount(address)":"9480e4dd","getRoleAdmin(bytes32)":"248a9ca3","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getSnapshot(uint64,address)":"c07449e2","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,uint256,uint256,uint16)":"cbb6d6bd","lastRoundAdvance()":"05d64e38","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","nativeEnabled()":"77ab2cf3","nextSlashId(address)":"96085673","operatorCommissionBps()":"32273f61","paused()":"5c975abb","proxiableUUID()":"52d1902d","registerFacet(address)":"46d163aa","registerFacetSelectors(address,bytes4[])":"19e82e61","renounceRole(bytes32,address)":"36568abe","requireAdapters()":"b54b2b9e","resetPendingSlashCount(address,uint64)":"e27e05c1","revokeRole(bytes32,address)":"d547741f","roundDuration()":"f7cb789a","serviceSlashCount(uint64,address)":"9722f4b9","slashHistory(address,uint64)":"0aa8b110","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"existingFacet\",\"type\":\"address\"}],\"name\":\"SelectorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"UnknownSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDust\",\"type\":\"uint256\"}],\"name\":\"DustAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FacetSelectorCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"OperatorDelegationModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashCountReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashDecremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMISSION_CHANGE_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TANGLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_ASSETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_SHARES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blueprintSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"clearFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"facetForSelector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAccumulatedDust\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"}],\"name\":\"getOperatorSlashFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getPendingSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lostAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSnapshot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDelegated\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorSnapshot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_operatorCommissionBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundAdvance\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nextSlashId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"registerFacet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"registerFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requireAdapters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"resetPendingSlashCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"slashHistory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"L-18 FIX: Zero address provided - kept parameterless for backward compatibility Context is typically clear from the function that reverts\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"details\":\"Individual delegator amounts can be computed: shares * (oldRate - newRate) / PRECISION\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"params\":{\"assetHash\":\"Asset hash for the pool\",\"blueprintId\":\"The blueprint where violation occurred (0 for consensus/native slash)\",\"delegatorsSlashed\":\"Amount slashed from delegator pools (reduces totalAssets)\",\"exchangeRateAfter\":\"Exchange rate after slash (scaled by PRECISION)\",\"operator\":\"The slashed operator\",\"operatorSlashed\":\"Amount slashed from operator's self-stake\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"}},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"commitmentCount\":\"Number of asset commitments that were slashed\",\"operator\":\"The slashed operator\",\"serviceId\":\"The service where violation occurred\",\"totalSlashed\":\"Total amount slashed across all committed assets\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getAccumulatedDust(address)\":{\"params\":{\"token\":\"The token address (address(0) for native)\"},\"returns\":{\"_0\":\"The accumulated dust amount\"}},\"getAssetAdapter(address)\":{\"params\":{\"token\":\"Token address\"},\"returns\":{\"_0\":\"adapter Adapter address (or zero if none)\"}},\"getOperatorSlashFactor(address,bytes32)\":{\"details\":\"Returns PRECISION (1e18) if unset\"},\"getPendingSlashCount(address)\":{\"params\":{\"operator\":\"The operator to query\"},\"returns\":{\"_0\":\"count Number of pending slashes\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getSlashCountForBlueprint(uint64,address)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"operator\":\"The operator address\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in services of this blueprint\"}},\"getSlashCountForService(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in this service\"}},\"getSlashImpact(address,uint64,address)\":{\"params\":{\"delegator\":\"The delegator to check\",\"operator\":\"The operator that was slashed\",\"slashId\":\"The slash event ID\"},\"returns\":{\"lostAmount\":\"Approximate amount lost due to this slash\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,uint256,uint256,uint16)\":{\"params\":{\"_operatorCommissionBps\":\"Operator commission in basis points\",\"admin\":\"Admin address\",\"nativeMinDelegation\":\"Minimum delegation amount\",\"nativeMinOperatorStake\":\"Minimum stake for operators\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"resetPendingSlashCount(address,uint64)\":{\"details\":\"Admin-only recovery function for when count becomes inconsistent\",\"params\":{\"count\":\"The correct pending slash count\",\"operator\":\"The operator to reset\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"MultiAssetDelegation\",\"version\":1},\"userdoc\":{\"events\":{\"DustAccumulated(address,uint256,uint256)\":{\"notice\":\"Emitted when dust is accumulated from rounding\"},\"DustSwept(address,address,uint256)\":{\"notice\":\"Emitted when accumulated dust is swept to treasury\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when slash is recorded (for off-chain indexing of per-delegator impact)\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an operator and their delegators are slashed for an asset\"},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"notice\":\"Emitted when an operator is slashed for a specific service with per-asset commitments\"}},\"kind\":\"user\",\"methods\":{\"COMMISSION_CHANGE_DELAY()\":{\"notice\":\"Timelock delay for commission changes (7 days)\"},\"blueprintSlashCount(uint64,address)\":{\"notice\":\"Slash count per blueprint: blueprintId => operator => count\"},\"clearFacetSelectors(bytes4[])\":{\"notice\":\"Remove selectors from the router\"},\"currentRound()\":{\"notice\":\"Current round number\"},\"delegationBondLessDelay()\":{\"notice\":\"Delay for unstaking delegations (in rounds)\"},\"facetForSelector(bytes4)\":{\"notice\":\"Resolve the facet for a selector\"},\"getAccumulatedDust(address)\":{\"notice\":\"Get accumulated dust for a token\"},\"getAssetAdapter(address)\":{\"notice\":\"Get adapter for a token\"},\"getOperatorSlashFactor(address,bytes32)\":{\"notice\":\"Reserved getter for the historical slash factor (unused with share-based pools)\"},\"getPendingSlashCount(address)\":{\"notice\":\"Get pending slash count for an operator\"},\"getSlashCount(address)\":{\"notice\":\"Get total slashes for an operator\"},\"getSlashCountForBlueprint(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific blueprint\"},\"getSlashCountForService(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific service\"},\"getSlashImpact(address,uint64,address)\":{\"notice\":\"Calculate how much a delegator lost from a specific slash\"},\"getSlashRecord(address,uint64)\":{\"notice\":\"Get slash record details\"},\"getSnapshot(uint64,address)\":{\"notice\":\"Get snapshot for an operator at a specific round\"},\"initialize(address,uint256,uint256,uint16)\":{\"notice\":\"Initialize the contract\"},\"lastRoundAdvance()\":{\"notice\":\"Timestamp when the last round was advanced\"},\"leaveDelegatorsDelay()\":{\"notice\":\"Delay for delegator withdrawals (in rounds)\"},\"leaveOperatorsDelay()\":{\"notice\":\"Delay for operator exit (in rounds)\"},\"nativeEnabled()\":{\"notice\":\"Whether native asset is enabled\"},\"nextSlashId(address)\":{\"notice\":\"Next slash ID per operator\"},\"operatorCommissionBps()\":{\"notice\":\"Operator commission rate in basis points\"},\"registerFacet(address)\":{\"notice\":\"Register selectors exposed by a facet\"},\"registerFacetSelectors(address,bytes4[])\":{\"notice\":\"Register specific selectors for a facet\"},\"requireAdapters()\":{\"notice\":\"Whether to require adapters for all ERC20 deposits\"},\"resetPendingSlashCount(address,uint64)\":{\"notice\":\"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes\"},\"roundDuration()\":{\"notice\":\"Seconds per round (used for time-based rate limiting)\"},\"serviceSlashCount(uint64,address)\":{\"notice\":\"Slash count per service: serviceId => operator => count\"},\"slashHistory(address,uint64)\":{\"notice\":\"Slash history per operator: operator => slashId => record\"}},\"notice\":\"Router contract for multi-asset staking\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MultiAssetDelegation.sol\":\"MultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"src/config/ProtocolConfig.sol\":{\"keccak256\":\"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72\",\"dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C\"]},\"src/facets/FacetRouterBase.sol\":{\"keccak256\":\"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa\",\"dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD\"]},\"src/interfaces/IFacetSelectors.sol\":{\"keccak256\":\"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3\",\"dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7\",\"dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c\",\"dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV\"]},\"src/staking/DepositManager.sol\":{\"keccak256\":\"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8\",\"dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3\"]},\"src/staking/MultiAssetDelegation.sol\":{\"keccak256\":\"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2\",\"dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67\",\"dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0\",\"dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d\",\"dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os\"]},\"src/staking/adapters/IAssetAdapter.sol\":{\"keccak256\":\"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44\",\"dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"NotAContract"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"existingFacet","type":"address"}],"type":"error","name":"SelectorAlreadyRegistered"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"UnknownSelector"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalDust","type":"uint256","indexed":false}],"type":"event","name":"DustAccumulated","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DustSwept","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetRegistered","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"FacetSelectorCleared","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetSelectorSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8","indexed":false}],"type":"event","name":"OperatorDelegationModeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorWhitelistUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashCountReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashDecremented","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashIncremented","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMISSION_CHANGE_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TANGLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_ASSETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"blueprintSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"clearFacetSelectors"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetForSelector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAccumulatedDust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetAdapter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorSlashFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"lostAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSnapshot","outputs":[{"internalType":"struct Types.OperatorSnapshot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"totalDelegated","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"nativeMinOperatorStake","type":"uint256"},{"internalType":"uint256","name":"nativeMinDelegation","type":"uint256"},{"internalType":"uint16","name":"_operatorCommissionBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastRoundAdvance","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nextSlashId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerFacet"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"registerFacetSelectors"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"requireAdapters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"resetPendingSlashCount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"serviceSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"slashHistory","outputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getAccumulatedDust(address)":{"params":{"token":"The token address (address(0) for native)"},"returns":{"_0":"The accumulated dust amount"}},"getAssetAdapter(address)":{"params":{"token":"Token address"},"returns":{"_0":"adapter Adapter address (or zero if none)"}},"getOperatorSlashFactor(address,bytes32)":{"details":"Returns PRECISION (1e18) if unset"},"getPendingSlashCount(address)":{"params":{"operator":"The operator to query"},"returns":{"_0":"count Number of pending slashes"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getSlashCountForBlueprint(uint64,address)":{"params":{"blueprintId":"The blueprint ID","operator":"The operator address"},"returns":{"_0":"count Number of times operator was slashed in services of this blueprint"}},"getSlashCountForService(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"count Number of times operator was slashed in this service"}},"getSlashImpact(address,uint64,address)":{"params":{"delegator":"The delegator to check","operator":"The operator that was slashed","slashId":"The slash event ID"},"returns":{"lostAmount":"Approximate amount lost due to this slash"}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,uint256,uint256,uint16)":{"params":{"_operatorCommissionBps":"Operator commission in basis points","admin":"Admin address","nativeMinDelegation":"Minimum delegation amount","nativeMinOperatorStake":"Minimum stake for operators"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"resetPendingSlashCount(address,uint64)":{"details":"Admin-only recovery function for when count becomes inconsistent","params":{"count":"The correct pending slash count","operator":"The operator to reset"}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMISSION_CHANGE_DELAY()":{"notice":"Timelock delay for commission changes (7 days)"},"blueprintSlashCount(uint64,address)":{"notice":"Slash count per blueprint: blueprintId => operator => count"},"clearFacetSelectors(bytes4[])":{"notice":"Remove selectors from the router"},"currentRound()":{"notice":"Current round number"},"delegationBondLessDelay()":{"notice":"Delay for unstaking delegations (in rounds)"},"facetForSelector(bytes4)":{"notice":"Resolve the facet for a selector"},"getAccumulatedDust(address)":{"notice":"Get accumulated dust for a token"},"getAssetAdapter(address)":{"notice":"Get adapter for a token"},"getOperatorSlashFactor(address,bytes32)":{"notice":"Reserved getter for the historical slash factor (unused with share-based pools)"},"getPendingSlashCount(address)":{"notice":"Get pending slash count for an operator"},"getSlashCount(address)":{"notice":"Get total slashes for an operator"},"getSlashCountForBlueprint(uint64,address)":{"notice":"Get slash count for an operator in a specific blueprint"},"getSlashCountForService(uint64,address)":{"notice":"Get slash count for an operator in a specific service"},"getSlashImpact(address,uint64,address)":{"notice":"Calculate how much a delegator lost from a specific slash"},"getSlashRecord(address,uint64)":{"notice":"Get slash record details"},"getSnapshot(uint64,address)":{"notice":"Get snapshot for an operator at a specific round"},"initialize(address,uint256,uint256,uint16)":{"notice":"Initialize the contract"},"lastRoundAdvance()":{"notice":"Timestamp when the last round was advanced"},"leaveDelegatorsDelay()":{"notice":"Delay for delegator withdrawals (in rounds)"},"leaveOperatorsDelay()":{"notice":"Delay for operator exit (in rounds)"},"nativeEnabled()":{"notice":"Whether native asset is enabled"},"nextSlashId(address)":{"notice":"Next slash ID per operator"},"operatorCommissionBps()":{"notice":"Operator commission rate in basis points"},"registerFacet(address)":{"notice":"Register selectors exposed by a facet"},"registerFacetSelectors(address,bytes4[])":{"notice":"Register specific selectors for a facet"},"requireAdapters()":{"notice":"Whether to require adapters for all ERC20 deposits"},"resetPendingSlashCount(address,uint64)":{"notice":"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes"},"roundDuration()":{"notice":"Seconds per round (used for time-based rate limiting)"},"serviceSlashCount(uint64,address)":{"notice":"Slash count per service: serviceId => operator => count"},"slashHistory(address,uint64)":{"notice":"Slash history per operator: operator => slashId => record"}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/MultiAssetDelegation.sol":"MultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"src/config/ProtocolConfig.sol":{"keccak256":"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c","urls":["bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72","dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C"],"license":"MIT"},"src/facets/FacetRouterBase.sol":{"keccak256":"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e","urls":["bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa","dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD"],"license":"MIT"},"src/interfaces/IFacetSelectors.sol":{"keccak256":"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4","urls":["bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3","dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xa7ae00404493eb867cd300a3e362aa22a1bcc676d74ebe5a80944d5ccd6ef02d","urls":["bzz-raw://809d4142049888b56b15788752104cc6cde3d73486fb1c03d7e2d04b9feea0a7","dweb:/ipfs/QmZRSchqvVA7GEfR7ma3SE8w7yPPbrdNpv1PT7ufgznfCv"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xe50f8b640a292305297219dafc7011e2a11c40e7f19c5b39c194c93eff41f267","urls":["bzz-raw://f6cb387c3851ef847823ab6e1312e9bfca8553a1a717c9bdad20d59d67c89d6c","dweb:/ipfs/QmeuzuD4QSMmmxhnU7XCyUNR4dvgVkfFNCTV3pjKdghSpV"],"license":"MIT"},"src/staking/DepositManager.sol":{"keccak256":"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248","urls":["bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8","dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3"],"license":"MIT"},"src/staking/MultiAssetDelegation.sol":{"keccak256":"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99","urls":["bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2","dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x9e5d953d592b97d013ba0d6b186e41c7d35061211b8a059f6244fd80c2b733c5","urls":["bzz-raw://66b94d609961548600cadce8e61cf2957a638b62dc1d2be469551c8bd52d6f67","dweb:/ipfs/QmQfZV7GeSiFsUNHxaaKKKJyUMCPcd7XbqGuLDLmNYHttj"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0xecc61403fa06ebe10382d85638f9b4551e47dc014b33fb464cce1cb159e800d8","urls":["bzz-raw://b7d9c7dbb3a99ca1b99d967e162f499aae669d456bb4e1032ef097dbcf1350b0","dweb:/ipfs/QmWBQuPYQz2iArDZMKq9qBNNhAHAnwWnHkKPvAzSaEfDVz"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0xf72c7e9a6b4e510428f76f541e751128129a992734b3f923d33edac9340789ae","urls":["bzz-raw://292c93a4bf8a4e4ac3ddd53d4e0b12ec3fb5d708295c985b459d63ff6895369d","dweb:/ipfs/QmW2D6Souu4jCJLSg1qpg8BUUoctmvigAHdKPNe8scE2os"],"license":"MIT"},"src/staking/adapters/IAssetAdapter.sol":{"keccak256":"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061","urls":["bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44","dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW"],"license":"MIT"}},"version":1},"id":181} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ASSET_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"BPS_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMISSION_CHANGE_DELAY","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"LOCK_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"LOCK_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_LOCK_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_NONE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_ONE_MONTH","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_SIX_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_THREE_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MULTIPLIER_TWO_MONTHS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASHER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TANGLE_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_ASSETS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"VIRTUAL_SHARES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"clearFacetSelectors","inputs":[{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentRound","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"delegationBondLessDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"facetForSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAccumulatedDust","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAssetAdapter","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getOperatorSlashFactor","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashCountForService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getSlashImpact","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"delegator","type":"address","internalType":"address"}],"outputs":[{"name":"lostAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSlashRecord","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingManager.SlashRecord","components":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getSnapshot","inputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorSnapshot","components":[{"name":"stake","type":"uint256","internalType":"uint256"},{"name":"totalDelegated","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"nativeMinOperatorStake","type":"uint256","internalType":"uint256"},{"name":"nativeMinDelegation","type":"uint256","internalType":"uint256"},{"name":"_operatorCommissionBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastRoundAdvance","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveDelegatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"leaveOperatorsDelay","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"nativeEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"nextSlashId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"operatorCommissionBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerFacet","inputs":[{"name":"facet","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerFacetSelectors","inputs":[{"name":"facet","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requireAdapters","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"resetPendingSlashCount","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roundDuration","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceSlashCount","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"slashHistory","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"round","type":"uint64","internalType":"uint64"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"assetHash","type":"bytes32","internalType":"bytes32"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","internalType":"uint256"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"BlueprintAddedToDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintRemovedFromDelegation","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"delegationIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Delegated","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"selectionMode","type":"uint8","indexed":false,"internalType":"enum Types.BlueprintSelectionMode"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeExecuted","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DelegatorUnstakeScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"estimatedAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"lock","type":"uint8","indexed":false,"internalType":"enum Types.LockMultiplier"}],"anonymous":false},{"type":"event","name":"DustAccumulated","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalDust","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DustSwept","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ExpiredLocksHarvested","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FacetRegistered","inputs":[{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"FacetSelectorCleared","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"FacetSelectorSet","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"facet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintAdded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorBlueprintRemoved","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorDelegationModeSet","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"mode","type":"uint8","indexed":false,"internalType":"enum Types.DelegationMode"}],"anonymous":false},{"type":"event","name":"OperatorLeavingScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorLeft","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorStakeIncreased","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeExecuted","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnstakeScheduled","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorWhitelistUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PendingSlashCountReset","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashDecremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"PendingSlashIncremented","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"newCount","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashRecorded","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateBefore","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Slashed","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"assetHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"operatorSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"delegatorsSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"exchangeRateAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashedForService","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"commitmentCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawScheduled","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"readyRound","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"delegator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotAContract","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SelectorAlreadyRegistered","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"existingFacet","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523461003e5761001161004d565b610019610043565b61447c61030782396080518181816138a70152818161390c0152613abb015261447c90f35b610049565b60405190565b5f80fd5b61005561005f565b61005d61022a565b565b610067610069565b565b610071610073565b565b61007b61007d565b565b610085610087565b565b61008f610091565b565b61009961009b565b565b6100a36100a5565b565b6100ad6100af565b565b6100b76100b9565b565b6100c16100c3565b565b6100cb6100cd565b565b6100d56100d7565b565b6100df6100e1565b565b6100e961012d565b565b60018060a01b031690565b90565b61010d610108610112926100eb565b6100f6565b6100eb565b90565b61011e906100f9565b90565b61012a90610115565b90565b61013630610121565b608052565b60401c90565b60ff1690565b6101536101589161013b565b610141565b90565b6101659054610147565b90565b5f0190565b5f1c90565b60018060401b031690565b61018961018e9161016d565b610172565b90565b61019b905461017d565b90565b60018060401b031690565b5f1b90565b906101bf60018060401b03916101a9565b9181191691161790565b6101dd6101d86101e29261019e565b6100f6565b61019e565b90565b90565b906101fd6101f8610204926101c9565b6101e5565b82546101ae565b9055565b6102119061019e565b9052565b9190610228905f60208501940190610208565b565b6102326102e2565b61023d5f820161015b565b6102c65761024c5f8201610191565b61026461025e60018060401b0361019e565b9161019e565b0361026d575b50565b610280905f60018060401b0391016101e8565b60018060401b036102bd7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2916102b4610043565b91829182610215565b0390a15f61026a565b5f63f92ee8a960e01b8152806102de60048201610168565b0390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009056fe60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:181:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;1313:53;;;:::i;:::-;;;:::i;:::-;:::o;390:3323:111:-;;;:::i;:::-;:::o;593:16751:178:-;;;:::i;:::-;:::o;833:35612:185:-;;;:::i;:::-;:::o;807:15809:184:-;;;:::i;:::-;:::o;749:44442:176:-;;;:::i;:::-;:::o;622:21065:182:-;;;:::i;:::-;:::o;427:29682:177:-;;;:::i;:::-;:::o;1094:3411:69:-;;;:::i;:::-;:::o;701:3153:68:-;;;:::i;:::-;:::o;2090:6192:48:-;;;:::i;:::-;:::o;769:414:71:-;;;:::i;:::-;:::o;422:447:40:-;;;:::i;:::-;:::o;226:3116:1:-;;;:::i;:::-;:::o;688:505:66:-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;986:5611:59:-;1163:13;1171:4;1163:13;:::i;:::-;;;986:5611::o;1033:3847:181:-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;7711:422:58:-;7859:26;;:::i;:::-;7900:15;;:1;:15;;:::i;:::-;7896:76;;7985:14;;:1;:14;;:::i;:::-;:34;;1033:3847:181;;;;;7985:34:58;:::i;:::-;;;:::i;:::-;;7981:146;;7711:422;;:::o;7981:146::-;8035:33;1033:3847:181;8035:14:58;1033:3847:181;;;;;8035:1:58;:14;:33;:::i;:::-;1033:3847:181;;;;;8087:29:58;;;;;:::i;:::-;;;;;;:::i;:::-;;;;7981:146;;;7896:76;7938:23;;;;;;;;;;;;:::i;:::-;;;;8737:170;8837:64;8737:170;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610015575b366134f557005b61001f5f356103ce565b806301ffc9a7146103c957806305d64e38146103c45780630aa8b110146103bf57806312d91c88146103ba57806318056dc2146103b557806319e82e61146103b0578063248a9ca3146103ab5780632f2ff15d146103a657806332273f61146103a157806336568abe1461039c578063453eccea1461039757806346d163aa14610392578063491474111461038d5780634962f88f146103885780634de8addc146103835780634e9c929a1461037e5780634f1ef286146103795780635095af641461037457806352d1902d1461036f57806354de23201461036a5780635c975abb14610365578063602356e31461036057806366c368751461035b57806372b5032d1461035657806375b238fc1461035157806377ab2cf31461034c5780637df92ada1461034757806388c47f68146103425780638a19c8bc1461033d5780638a7fe60f1461033857806390837ff41461033357806391d148541461032e5780639480e4dd146103295780639494f42614610324578063960856731461031f5780639722f4b91461031a5780639e87058514610315578063a217fddf14610310578063a457af3d1461030b578063a4b32de814610306578063a7fa6f9814610301578063aaf5eb68146102fc578063ad3cb1cc146102f7578063b54b2b9e146102f2578063b6608409146102ed578063ba05bbf5146102e8578063c07449e2146102e3578063c550d938146102de578063cbb6d6bd146102d9578063d27a6f06146102d4578063d45ff582146102cf578063d547741f146102ca578063db8a173a146102c5578063dd764abf146102c0578063e07dec29146102bb578063e1a45218146102b6578063e27e05c1146102b1578063f3c9b311146102ac5763f7cb789a0361000e57611fd6565b611f92565b611f25565b611ef0565b611e87565b611e1c565b611daa565b611d67565b611d32565b611cc4565b611c54565b611b92565b611b5c565b611aee565b611aaa565b611a3e565b6119fa565b6118c9565b611856565b6117e9565b611784565b611662565b6115f2565b611583565b61152d565b6114de565b61146f565b611439565b611404565b6113cf565b611378565b611336565b6112c7565b611259565b6111e9565b611184565b61114f565b61111a565b6110b6565b611081565b611014565b610fdf565b610f86565b610e24565b610d75565b610d30565b610cc3565b610c90565b610c3d565b610bd1565b610b9c565b610b32565b610ad0565b610a69565b61099e565b61091b565b610876565b610513565b61045a565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b63ffffffff60e01b1690565b6103fb816103e6565b0361040257565b5f80fd5b90503590610413826103f2565b565b9060208282031261042e5761042b915f01610406565b90565b6103de565b151590565b61044190610433565b9052565b9190610458905f60208501940190610438565b565b3461048a57610486610475610470366004610415565b61200f565b61047d6103d4565b91829182610445565b0390f35b6103da565b5f91031261049957565b6103de565b1c90565b67ffffffffffffffff1690565b6104bf9060086104c4930261049e565b6104a2565b90565b906104d291546104af565b90565b6104e15f6010906104c7565b90565b67ffffffffffffffff1690565b6104fa906104e4565b9052565b9190610511905f602085019401906104f1565b565b346105435761052336600461048f565b61053f61052e6104d5565b6105366103d4565b918291826104fe565b0390f35b6103da565b60018060a01b031690565b61055c90610548565b90565b61056881610553565b0361056f57565b5f80fd5b905035906105808261055f565b565b61058b816104e4565b0361059257565b5f80fd5b905035906105a382610582565b565b91906040838203126105cd57806105c16105ca925f8601610573565b93602001610596565b90565b6103de565b90565b6105e96105e46105ee92610548565b6105d2565b610548565b90565b6105fa906105d5565b90565b610606906105f1565b90565b90610613906105fd565b5f5260205260405f2090565b61063361062e610638926104e4565b6105d2565b6104e4565b90565b906106459061061f565b5f5260205260405f2090565b5f1c90565b61066261066791610651565b6104a2565b90565b6106749054610656565b90565b60401c90565b61068961068e91610677565b6104a2565b90565b61069b905461067d565b90565b60801c90565b6106b06106b59161069e565b6104a2565b90565b6106c290546106a4565b90565b90565b6106d46106d991610651565b6106c5565b90565b6106e690546106c8565b90565b61ffff1690565b6106fc61070191610651565b6106e9565b90565b61070e90546106f0565b90565b90565b61072061072591610651565b610711565b90565b6107329054610714565b90565b90610744610749926055610609565b61063b565b6107545f820161066a565b916107605f8301610691565b9161076c5f82016106b8565b91610779600183016106dc565b9161078660028201610704565b9161079360038301610728565b916107a060048201610728565b916107b960066107b260058501610728565b93016106dc565b90565b90565b6107c8906107bc565b9052565b61ffff1690565b6107dc906107cc565b9052565b90565b6107ec906107e0565b9052565b9694929099989795939161012088019a5f890161080c916104f1565b60208801610819916104f1565b60408701610826916104f1565b60608601610833916107bf565b60808501610840916107d3565b60a0840161084d916107e3565b60c0830161085a916107e3565b60e08201610867916107e3565b61010001610874916107bf565b565b346108b1576108ad61089261088c3660046105a5565b90610735565b956108a49997999591959492946103d4565b998a998a6107f0565b0390f35b6103da565b6108bf816107bc565b036108c657565b5f80fd5b905035906108d7826108b6565b565b919060408382031261090157806108f56108fe925f8601610573565b936020016108ca565b90565b6103de565b9190610919905f602085019401906107e3565b565b3461094c576109486109376109313660046108d9565b906120a7565b61093f6103d4565b91829182610906565b0390f35b6103da565b90565b61096861096361096d92610951565b6105d2565b6107cc565b90565b61097b612af8610954565b90565b610986610970565b90565b919061099c905f602085019401906107d3565b565b346109ce576109ae36600461048f565b6109ca6109b961097e565b6109c16103d4565b91829182610989565b0390f35b6103da565b5f80fd5b5f80fd5b5f80fd5b909182601f83011215610a195781359167ffffffffffffffff8311610a14576020019260208302840111610a0f57565b6109db565b6109d7565b6109d3565b919091604081840312610a5f57610a37835f8301610573565b92602082013567ffffffffffffffff8111610a5a57610a5692016109df565b9091565b6103e2565b6103de565b5f0190565b34610a9857610a82610a7c366004610a1e565b9161217a565b610a8a6103d4565b80610a9481610a64565b0390f35b6103da565b90602082820312610ab657610ab3915f016108ca565b90565b6103de565b9190610ace905f602085019401906107bf565b565b34610b0057610afc610aeb610ae6366004610a9d565b6121b2565b610af36103d4565b91829182610abb565b0390f35b6103da565b9190604083820312610b2d5780610b21610b2a925f86016108ca565b93602001610573565b90565b6103de565b34610b6157610b4b610b45366004610b05565b90612206565b610b536103d4565b80610b5d81610a64565b0390f35b6103da565b610b76906008610b7b930261049e565b6106e9565b90565b90610b899154610b66565b90565b610b996001601090610b7e565b90565b34610bcc57610bac36600461048f565b610bc8610bb7610b8c565b610bbf6103d4565b91829182610989565b0390f35b6103da565b34610c0057610bea610be4366004610b05565b90612212565b610bf26103d4565b80610bfc81610a64565b0390f35b6103da565b90565b610c1c610c17610c2192610c05565b6105d2565b6107cc565b90565b610c2f613e80610c08565b90565b610c3a610c24565b90565b34610c6d57610c4d36600461048f565b610c69610c58610c32565b610c606103d4565b91829182610989565b0390f35b6103da565b90602082820312610c8b57610c88915f01610573565b90565b6103de565b34610cbe57610ca8610ca3366004610c72565b612352565b610cb06103d4565b80610cba81610a64565b0390f35b6103da565b34610cf357610cef610cde610cd9366004610c72565b612430565b610ce66103d4565b91829182610906565b0390f35b6103da565b90565b610d0f610d0a610d1492610cf8565b6105d2565b6107cc565b90565b610d22612710610cfb565b90565b610d2d610d17565b90565b34610d6057610d4036600461048f565b610d5c610d4b610d25565b610d536103d4565b91829182610989565b0390f35b6103da565b610d7260016008906104c7565b90565b34610da557610d8536600461048f565b610da1610d90610d65565b610d986103d4565b918291826104fe565b0390f35b6103da565b9190604083820312610dd25780610dc6610dcf925f8601610596565b93602001610573565b90565b6103de565b90610de19061061f565b5f5260205260405f2090565b90610df7906105fd565b5f5260205260405f2090565b610e1c610e2192610e176058935f94610dd7565b610ded565b6104c7565b90565b34610e5557610e51610e40610e3a366004610daa565b90610e03565b610e486103d4565b918291826104fe565b0390f35b6103da565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610e8690610e5e565b810190811067ffffffffffffffff821117610ea057604052565b610e68565b90610eb8610eb16103d4565b9283610e7c565b565b67ffffffffffffffff8111610ed857610ed4602091610e5e565b0190565b610e68565b90825f939282370152565b90929192610efd610ef882610eba565b610ea5565b93818552602085019082840111610f1957610f1792610edd565b565b610e5a565b9080601f83011215610f3c57816020610f3993359101610ee8565b90565b6109d3565b919091604081840312610f8157610f5a835f8301610573565b92602082013567ffffffffffffffff8111610f7c57610f799201610f1e565b90565b6103e2565b6103de565b610f9a610f94366004610f41565b90612478565b610fa26103d4565b80610fac81610a64565b0390f35b7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3990565b610fdc610fb0565b90565b3461100f57610fef36600461048f565b61100b610ffa610fd4565b6110026103d4565b91829182610abb565b0390f35b6103da565b346110445761102436600461048f565b61104061102f6124ef565b6110376103d4565b91829182610abb565b0390f35b6103da565b90565b61106061105b61106592611049565b6105d2565b6107cc565b90565b611073612ee061104c565b90565b61107e611068565b90565b346110b15761109136600461048f565b6110ad61109c611076565b6110a46103d4565b91829182610989565b0390f35b6103da565b346110e6576110c636600461048f565b6110e26110d1612523565b6110d96103d4565b91829182610445565b0390f35b6103da565b7f19449a4ad57e40a5aa77e785b4539e53ba9e7fedbf7076388ee3fb1bc2ddea1b90565b6111176110eb565b90565b3461114a5761112a36600461048f565b61114661113561110f565b61113d6103d4565b91829182610abb565b0390f35b6103da565b3461117f5761117b61116a611165366004610c72565b612545565b6111726103d4565b918291826104fe565b0390f35b6103da565b346111b5576111b16111a061119a366004610daa565b90612564565b6111a86103d4565b918291826104fe565b0390f35b6103da565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177590565b6111e66111ba565b90565b34611219576111f936600461048f565b6112156112046111de565b61120c6103d4565b91829182610abb565b0390f35b6103da565b60ff1690565b611234906008611239930261049e565b61121e565b90565b906112479154611224565b90565b61125660055f9061123c565b90565b346112895761126936600461048f565b61128561127461124a565b61127c6103d4565b91829182610445565b0390f35b6103da565b90565b6112a56112a06112aa9261128e565b6105d2565b6104e4565b90565b6112b9624f1a00611291565b90565b6112c46112ad565b90565b346112f7576112d736600461048f565b6112f36112e26112bc565b6112ea6103d4565b918291826104fe565b0390f35b6103da565b90565b61131361130e611318926112fc565b6105d2565b6107e0565b90565b6113286305f5e1006112ff565b90565b61133361131b565b90565b346113665761134636600461048f565b61136261135161132b565b6113596103d4565b91829182610906565b0390f35b6103da565b6113755f806104c7565b90565b346113a85761138836600461048f565b6113a461139361136b565b61139b6103d4565b918291826104fe565b0390f35b6103da565b6113b690610553565b9052565b91906113cd905f602085019401906113ad565b565b346113ff576113fb6113ea6113e5366004610c72565b6125d2565b6113f26103d4565b918291826113ba565b0390f35b6103da565b346114345761143061141f61141a366004610415565b6125f1565b6114276103d4565b918291826113ba565b0390f35b6103da565b3461146a5761146661145561144f366004610b05565b9061261c565b61145d6103d4565b91829182610445565b0390f35b6103da565b3461149f5761149b61148a611485366004610c72565b61264e565b6114926103d4565b918291826104fe565b0390f35b6103da565b90916060828403126114d9576114d66114bf845f8501610573565b936114cd8160208601610596565b93604001610573565b90565b6103de565b3461150f5761150b6114fa6114f43660046114a4565b91612886565b6115026103d4565b91829182610906565b0390f35b6103da565b61152a906115256056915f92610ded565b6104c7565b90565b3461155d57611559611548611543366004610c72565b611514565b6115506103d4565b918291826104fe565b0390f35b6103da565b61157b611580926115766057935f94610dd7565b610ded565b6104c7565b90565b346115b4576115b061159f611599366004610daa565b90611562565b6115a76103d4565b918291826104fe565b0390f35b6103da565b90565b6115d06115cb6115d5926115b9565b6105d2565b6104e4565b90565b6115e462278d006115bc565b90565b6115ef6115d8565b90565b346116225761160236600461048f565b61161e61160d6115e7565b6116156103d4565b918291826104fe565b0390f35b6103da565b90565b5f1b90565b61164361163e61164892611627565b61162a565b6107bc565b90565b6116545f61162f565b90565b61165f61164b565b90565b346116925761167236600461048f565b61168e61167d611657565b6116856103d4565b91829182610abb565b0390f35b6103da565b6116a0906104e4565b9052565b6116ad906107bc565b9052565b6116ba906107cc565b9052565b6116c7906107e0565b9052565b906101008061176c936116e45f8201515f860190611697565b6116f660208201516020860190611697565b61170860408201516040860190611697565b61171a606082015160608601906116a4565b61172c608082015160808601906116b1565b61173e60a082015160a08601906116be565b61175060c082015160c08601906116be565b61176260e082015160e08601906116be565b01519101906116a4565b565b9190611782905f61012085019401906116cb565b565b346117b5576117b16117a061179a3660046105a5565b90612a34565b6117a86103d4565b9182918261176e565b0390f35b6103da565b7fb1fadd3142ab2ad7f1337ea4d97112bcc8337fc11ce5b20cb04ad038adf9981990565b6117e66117ba565b90565b34611819576117f936600461048f565b6118156118046117de565b61180c6103d4565b91829182610abb565b0390f35b6103da565b90565b61183561183061183a9261181e565b6105d2565b6107cc565b90565b6118486132c8611821565b90565b61185361183d565b90565b346118865761186636600461048f565b61188261187161184b565b6118796103d4565b91829182610989565b0390f35b6103da565b90565b6118a261189d6118a79261188b565b6105d2565b6107e0565b90565b6118bb670de0b6b3a764000061188e565b90565b6118c66118aa565b90565b346118f9576118d936600461048f565b6118f56118e46118be565b6118ec6103d4565b91829182610906565b0390f35b6103da565b67ffffffffffffffff811161191c57611918602091610e5e565b0190565b610e68565b9061193361192e836118fe565b610ea5565b918252565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b6119696005611921565b9061197660208301611938565b565b61198061195f565b90565b61198b611978565b90565b611996611983565b90565b5190565b60209181520190565b90825f9392825e0152565b6119d06119d96020936119de936119c781611999565b9384809361199d565b958691016119a6565b610e5e565b0190565b6119f79160208201915f8184039101526119b1565b90565b34611a2a57611a0a36600461048f565b611a26611a1561198e565b611a1d6103d4565b918291826119e2565b0390f35b6103da565b611a3b60075f9061123c565b90565b34611a6e57611a4e36600461048f565b611a6a611a59611a2f565b611a616103d4565b91829182610445565b0390f35b6103da565b90565b611a8a611a85611a8f92611a73565b6105d2565b6107e0565b90565b611a9c6001611a76565b90565b611aa7611a92565b90565b34611ada57611aba36600461048f565b611ad6611ac5611a9f565b611acd6103d4565b91829182610906565b0390f35b6103da565b611aeb5f6018906104c7565b90565b34611b1e57611afe36600461048f565b611b1a611b09611adf565b611b116103d4565b918291826104fe565b0390f35b6103da565b90602080611b4593611b3b5f8201515f8601906116be565b01519101906116be565b565b9190611b5a905f60408501940190611b23565b565b34611b8d57611b89611b78611b72366004610daa565b90612b0b565b611b806103d4565b91829182611b47565b0390f35b6103da565b34611bc357611bbf611bae611ba8366004610daa565b90612b33565b611bb66103d4565b918291826104fe565b0390f35b6103da565b611bd1816107e0565b03611bd857565b5f80fd5b90503590611be982611bc8565b565b611bf4816107cc565b03611bfb57565b5f80fd5b90503590611c0c82611beb565b565b608081830312611c4f57611c24825f8301610573565b92611c4c611c358460208501611bdc565b93611c438160408601611bdc565b93606001611bff565b90565b6103de565b34611c8657611c70611c67366004611c0e565b9291909161331f565b611c786103d4565b80611c8281610a64565b0390f35b6103da565b90565b611ca2611c9d611ca792611c8b565b6105d2565b6104e4565b90565b611cb66276a700611c8e565b90565b611cc1611caa565b90565b34611cf457611cd436600461048f565b611cf0611cdf611cb9565b611ce76103d4565b918291826104fe565b0390f35b6103da565b90565b611d10611d0b611d1592611cf9565b6105d2565b6104e4565b90565b611d2462093a80611cfc565b90565b611d2f611d18565b90565b34611d6257611d4236600461048f565b611d5e611d4d611d27565b611d556103d4565b918291826104fe565b0390f35b6103da565b34611d9657611d80611d7a366004610b05565b90613357565b611d886103d4565b80611d9281610a64565b0390f35b6103da565b611da760015f906104c7565b90565b34611dda57611dba36600461048f565b611dd6611dc5611d9b565b611dcd6103d4565b918291826104fe565b0390f35b6103da565b90565b611df6611df1611dfb92611ddf565b6105d2565b6107e0565b90565b611e0e662386f26fc10000611de2565b90565b611e19611dfe565b90565b34611e4c57611e2c36600461048f565b611e48611e37611e11565b611e3f6103d4565b91829182610906565b0390f35b6103da565b90602082820312611e82575f82013567ffffffffffffffff8111611e7d57611e7992016109df565b9091565b6103e2565b6103de565b34611eb657611ea0611e9a366004611e51565b906133b8565b611ea86103d4565b80611eb281610a64565b0390f35b6103da565b611ecf611eca611ed492610cf8565b6105d2565b6107e0565b90565b611ee2612710611ebb565b90565b611eed611ed7565b90565b34611f2057611f0036600461048f565b611f1c611f0b611ee5565b611f136103d4565b91829182610906565b0390f35b6103da565b34611f5457611f3e611f383660046105a5565b906134e9565b611f466103d4565b80611f5081610a64565b0390f35b6103da565b90565b611f70611f6b611f7592611f59565b6105d2565b6104e4565b90565b611f8462ed4e00611f5c565b90565b611f8f611f78565b90565b34611fc257611fa236600461048f565b611fbe611fad611f87565b611fb56103d4565b918291826104fe565b0390f35b6103da565b611fd35f6008906104c7565b90565b3461200657611fe636600461048f565b612002611ff1611fc7565b611ff96103d4565b918291826104fe565b0390f35b6103da565b5f90565b61201761200b565b508061203261202c637965db0b60e01b6103e6565b916103e6565b1490811561203f575b5090565b61204991506134fa565b5f61203b565b5f90565b9061205d906105fd565b5f5260205260405f2090565b612072906107bc565b90565b9061207f90612069565b5f5260205260405f2090565b61209f61209a6120a492611627565b6105d2565b6107e0565b90565b6120cc916120c26120c7926120ba61204f565b506011612053565b612075565b610728565b806120df6120d95f61208b565b916107e0565b145f146120f357506120ef6118aa565b5b90565b6120f0565b67ffffffffffffffff81116121105760208091020190565b610e68565b9092919261212a612125826120f8565b610ea5565b938185526020808601920283019281841161216757915b83831061214e5750505050565b6020809161215c8486610406565b815201920191612141565b6109db565b612177913691612115565b90565b612196926121909161218a613532565b9261216c565b9061356d565b565b5f90565b906121a690612069565b5f5260205260405f2090565b60016121d36121d9926121c3612198565b505f6121cd6136e1565b0161219c565b016106dc565b90565b906121f7916121f26121ed826121b2565b613705565b6121f9565b565b9061220391613719565b50565b90612210916121dc565b565b908061222d6122276122226137d0565b610553565b91610553565b0361223e5761223b916137dd565b50565b5f63334bd91960e11b81528061225660048201610a64565b0390fd5b612263906105d5565b90565b61226f9061225a565b90565b61227b906105f1565b90565b60e01b90565b90505190612291826103f2565b565b909291926122a86122a3826120f8565b610ea5565b93818552602080860192028301928184116122e557915b8383106122cc5750505050565b602080916122da8486612284565b8152019201916122bf565b6109db565b9080601f830112156123085781602061230593519101612293565b90565b6109d3565b9060208282031261233d575f82015167ffffffffffffffff81116123385761233592016122ea565b90565b6103e2565b6103de565b61234a6103d4565b3d5f823e3d90fd5b61235a613532565b6123855f61236f61236a84612266565b612272565b636e25b9789061237d6103d4565b93849261227e565b8252818061239560048201610a64565b03915afa8015612415576123b1915f916123f3575b508261356d565b6123db7f4d3c30f5993f1922a779345a0f7ec1a170f1e52e9d230824f9c17e63596c906d916105fd565b906123e46103d4565b806123ee81610a64565b0390a2565b61240f91503d805f833e6124078183610e7c565b81019061230d565b5f6123aa565b612342565b90612424906105fd565b5f5260205260405f2090565b61244761244c9161243f61204f565b50601b61241a565b610728565b90565b906124619161245c613896565b612463565b565b906124769161247181613950565b6139ac565b565b906124829161244f565b565b61249590612490613aaa565b6124e3565b90565b90565b6124af6124aa6124b492612498565b61162a565b6107bc565b90565b6124e07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61249b565b90565b506124ec6124b7565b90565b6124ff6124fa612198565b612484565b90565b61250e61251391610651565b61121e565b90565b6125209054612502565b90565b61252b61200b565b5061253e5f612538613b08565b01612516565b90565b5f90565b61255c61256191612554612541565b506056610ded565b61066a565b90565b6125899161257f61258492612577612541565b506057610dd7565b610ded565b61066a565b90565b5f90565b9061259a906105fd565b5f5260205260405f2090565b60018060a01b031690565b6125bd6125c291610651565b6125a6565b90565b6125cf90546125b1565b90565b6125e96125ee916125e161258c565b506006612590565b6125c5565b90565b612603906125fd61258c565b50613b42565b90565b90612610906105fd565b5f5260205260405f2090565b61264b915f6126406126469361263061200b565b508261263a6136e1565b0161219c565b01612606565b612516565b90565b61266561266a9161265d612541565b506023610ded565b61066a565b90565b90612677906104e4565b9052565b90612685906107bc565b9052565b90612693906107cc565b9052565b906126a1906107e0565b9052565b6126b0610120610ea5565b90565b9061279161278760066126c46126a5565b946126db6126d35f830161066a565b5f880161266d565b6126f26126e95f8301610691565b6020880161266d565b6127096127005f83016106b8565b6040880161266d565b612721612718600183016106dc565b6060880161267b565b61273961273060028301610704565b60808801612689565b61275161274860038301610728565b60a08801612697565b61276961276060048301610728565b60c08801612697565b61278161277860058301610728565b60e08801612697565b016106dc565b610100840161267b565b565b61279c906126b3565b90565b6127a990516104e4565b90565b6127c06127bb6127c592611627565b6105d2565b6104e4565b90565b6127d290516107bc565b90565b6127df90516107e0565b90565b634e487b7160e01b5f52601160045260245ffd5b61280561280b919392936107e0565b926107e0565b820391821161281657565b6127e2565b61282a612830919392936107e0565b926107e0565b9161283c8382026107e0565b92818404149015171561284b57565b6127e2565b634e487b7160e01b5f52601260045260245ffd5b612870612876916107e0565b916107e0565b908115612881570490565b612850565b929190926128af6128aa61289861204f565b956128a560558590610609565b61063b565b612793565b916128bb5f840161279f565b6128cd6128c75f6127ac565b916104e4565b1461298e57906128ea91906128e4606085016127c8565b91613c76565b90816128fe6128f85f61208b565b916107e0565b1461297e5761290f60c082016127d5565b61292c61292661292160e085016127d5565b6107e0565b916107e0565b11612936575b5050565b612976929350906129628261295c60e061295560c061296897016127d5565b92016127d5565b906127f6565b9061281b565b6129706118aa565b90612864565b905f80612932565b5050905061298b5f61208b565b90565b505050905061299c5f61208b565b90565b5f90565b5f90565b5f90565b5f90565b6129b76126a5565b90602080808080808080808a6129cb61299f565b8152016129d661299f565b8152016129e161299f565b8152016129ec6129a3565b8152016129f76129a7565b815201612a026129ab565b815201612a0d6129ab565b815201612a186129ab565b815201612a236129a3565b81525050565b612a316129af565b90565b612a5991612a4f612a5492612a47612a29565b506055610609565b61063b565b612793565b90565b612a666040610ea5565b90565b612a71612a5c565b9060208083612a7e6129ab565b815201612a896129ab565b81525050565b612a97612a69565b90565b90612aa49061061f565b5f5260205260405f2090565b90612aba906105fd565b5f5260205260405f2090565b90612afd612af46001612ad7612a5c565b94612aee612ae65f8301610728565b5f8801612697565b01610728565b60208401612697565b565b612b0890612ac6565b90565b612b3091612b26612b2b92612b1e612a8f565b506010612a9a565b612ab0565b612aff565b90565b612b5891612b4e612b5392612b46612541565b506058610dd7565b610ded565b61066a565b90565b612b67612b6c91610677565b61121e565b90565b612b799054612b5b565b90565b612b90612b8b612b9592611a73565b6105d2565b6104e4565b90565b612ba1906105f1565b90565b90612bb767ffffffffffffffff9161162a565b9181191691161790565b90565b90612bd9612bd4612be09261061f565b612bc1565b8254612ba4565b9055565b60401b90565b90612bfe68ff000000000000000091612be4565b9181191691161790565b612c1190610433565b90565b90565b90612c2c612c27612c3392612c08565b612c14565b8254612bea565b9055565b612c4090612b7c565b9052565b9190612c57905f60208501940190612c37565b565b909192612c64613d65565b93612c79612c735f8701612b6f565b15610433565b93612c855f870161066a565b80612c98612c925f6127ac565b916104e4565b1480612db2575b90612cb3612cad6001612b7c565b916104e4565b1480612d8a575b612cc5909115610433565b9081612d79575b50612d5d57612cf593612cea612ce26001612b7c565b5f8901612bc4565b85612d4b575b613174565b612cfd575b50565b612d0a905f809101612c17565b6001612d427fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612d396103d4565b91829182612c44565b0390a15f612cfa565b612d5860015f8901612c17565b612cf0565b5f63f92ee8a960e01b815280612d7560048201610a64565b0390fd5b612d84915015610433565b5f612ccc565b50612cc5612d9730612b98565b3b612daa612da45f61208b565b916107e0565b149050612cba565b5085612c9f565b612dcd612dc8612dd292611627565b6105d2565b610548565b90565b612dde90612db9565b90565b612deb6040610ea5565b90565b634e487b7160e01b5f52602160045260245ffd5b60021115612e0c57565b612dee565b90612e1b82612e02565b565b90612e2790612e11565b9052565b90612e3590610553565b9052565b612e4d612e48612e52926107e0565b6105d2565b6107cc565b90565b612e5f60c0610ea5565b90565b90612e6c90610433565b9052565b90612e7a90612069565b5f5260205260405f2090565b612e909051610433565b90565b90612e9f60ff9161162a565b9181191691161790565b90612ebe612eb9612ec592612c08565b612c14565b8254612e93565b9055565b90612ed55f199161162a565b9181191691161790565b612ef3612eee612ef8926107e0565b6105d2565b6107e0565b90565b90565b90612f13612f0e612f1a92612edf565b612efb565b8254612ec9565b9055565b612f2890516107cc565b90565b90612f3861ffff9161162a565b9181191691161790565b612f56612f51612f5b926107cc565b6105d2565b6107cc565b90565b90565b90612f76612f71612f7d92612f42565b612f5e565b8254612f2b565b9055565b9061301060a0600561301694612fa45f8201612f9e5f8801612e86565b90612ea9565b612fbd60018201612fb7602088016127d5565b90612efe565b612fd660028201612fd0604088016127d5565b90612efe565b612fef60038201612fe9606088016127d5565b90612efe565b61300860048201613002608088016127d5565b90612efe565b019201612f1e565b90612f61565b565b9061302291612f81565b565b60801b90565b9061303a61ffff60801b91613024565b9181191691161790565b9061305961305461306092612f42565b612f5e565b825461302a565b9055565b90565b61307b61307661308092613064565b6105d2565b6104e4565b90565b61308e615460613067565b90565b906130ac6fffffffffffffffff000000000000000091612be4565b9181191691161790565b906130cb6130c66130d29261061f565b612bc1565b8254613091565b9055565b90565b6130ed6130e86130f2926130d6565b6105d2565b6104e4565b90565b6130ff601c6130d9565b90565b60c01b90565b9061311e67ffffffffffffffff60c01b91613102565b9181191691161790565b9061313d6131386131449261061f565b612bc1565b8254613108565b9055565b90565b61315f61315a61316492613148565b6105d2565b6104e4565b90565b613171603861314b565b90565b91909161317f613d93565b613187613da7565b61318f613dcd565b613197613df3565b61319f61164b565b816131a991613719565b506131b26111ba565b816131bc91613719565b506131c56117ba565b906131cf91613719565b505f806131db90612dd5565b6131e3612de1565b915f8301906131f191612e1d565b60208201906131ff91612e2b565b61320890613e5d565b90600192905f8091613218611ed7565b61322190612e39565b9361322a612e55565b965f88019061323891612e62565b602087019061324691612697565b604086019061325491612697565b61325d9061208b565b606085019061326b91612697565b6132749061208b565b608084019061328291612697565b60a083019061329091612689565b60029061329c91612e70565b906132a691613018565b60016132b3906005612ea9565b6132be906001613044565b60016132c990612b7c565b6132d3905f612bc4565b6132db613083565b6132e5905f6130b6565b6132ed6130f5565b6132f7905f613128565b6132ff6130f5565b61330a906001612bc4565b613312613167565b61331d9060016130b6565b565b9061332b939291612c59565b565b906133489161334361333e826121b2565b613705565b61334a565b565b90613354916137dd565b50565b906133619161332d565b565b600161336f91016107e0565b90565b5090565b634e487b7160e01b5f52603260045260245ffd5b919081101561339a576020020190565b613376565b356133a9816103f2565b90565b6133b5906103e6565b90565b9190916133c3613532565b6133cc5f61208b565b5b806133ea6133e46133df858890613372565b6107e0565b916107e0565b101561346e576134699061341061340b6134068588859161338a565b61339f565b613f24565b61342461341f8487849161338a565b61339f565b61344e7fbeb27701828f515b03069d44da6519b6c491da13ef1ca7082e619959d1f48ddb916133ac565b906134576103d4565b8061346181610a64565b0390a2613363565b6133cd565b50509050565b9061348e916134896134846111ba565b613705565b613490565b565b6134a5826134a060238490610ded565b612bc4565b6134e46134d27f90b37e59a942c5413ce00a3a844a47c20094979897cc653606d925e909885f35926105fd565b926134db6103d4565b918291826104fe565b0390a2565b906134f391613474565b565b613f3a565b61350261200b565b5061351c6135166301ffc9a760e01b6103e6565b916103e6565b1490565b61353061352b6111ba565b613705565b565b61353a613520565b565b5190565b9061354a8261353c565b81101561355b576020809102010190565b613376565b61356a90516103e6565b90565b91908261358a61358461357f5f612dd5565b610553565b91610553565b146136dc57823b6135a361359d5f61208b565b916107e0565b146136d6576135b15f61208b565b5b806135cd6135c76135c28561353c565b6107e0565b916107e0565b10156136d0576135ee6135e96135e4848490613540565b613560565b613b42565b806136096136036135fe5f612dd5565b610553565b91610553565b1415806136b5575b61369e57506136999061363761363061362b858490613540565b613560565b8690614041565b61364a613645848390613540565b613560565b8561367e6136787f12557f25e458d9682d7c959b5a960bc9332e8b7af1120b54a333bfc1ff282b39936133ac565b916105fd565b916136876103d4565b8061369181610a64565b0390a3613363565b6135b2565b6136b06136ab8385613540565b613560565b613fe8565b50806136c96136c387610553565b91610553565b1415613611565b50509050565b82613f99565b613f7d565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b613717906137116137d0565b9061407a565b565b61372161200b565b5061372a6136e1565b61373e61373883859061261c565b15610433565b5f146137c957613768906137635f61375b8160019401869061219c565b018590612606565b612ea9565b906137716137d0565b906137ae6137a86137a27f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95612069565b926105fd565b926105fd565b926137b76103d4565b806137c181610a64565b0390a4600190565b5050505f90565b6137d861258c565b503390565b6137e561200b565b506137ee6136e1565b6137f982849061261c565b5f14613883576138229061381d5f61381581809401869061219c565b018590612606565b612ea9565b9061382b6137d0565b9061386861386261385c7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95612069565b926105fd565b926105fd565b926138716103d4565b8061387b81610a64565b0390a4600190565b5050505f90565b613893906105f1565b90565b61389f3061388a565b6138d16138cb7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b1480156138fb575b6138df57565b5f63703e46dd60e11b8152806138f760048201610a64565b0390fd5b506139046140b5565b6139366139307f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b14156138d9565b5061394e6139496111ba565b613705565b565b6139599061393d565b565b613964906105d5565b90565b6139709061395b565b90565b61397c906105f1565b90565b9050519061398c826108b6565b565b906020828203126139a7576139a4915f0161397f565b90565b6103de565b91906139da60206139c46139bf86613967565b613973565b6352d1902d906139d26103d4565b93849261227e565b825281806139ea60048201610a64565b03915afa80915f92613a7a575b50155f14613a2b575050906001613a0c57505b565b613a27905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b9283613a46613a40613a3b6124b7565b6107bc565b916107bc565b03613a5b57613a569293506140db565b613a0a565b613a76845f918291632a87526960e21b835260048301610abb565b0390fd5b613a9c91925060203d8111613aa3575b613a948183610e7c565b81019061398e565b905f6139f7565b503d613a8a565b613ab33061388a565b613ae5613adf7f0000000000000000000000000000000000000000000000000000000000000000610553565b91610553565b03613aec57565b5f63703e46dd60e11b815280613b0460048201610a64565b0390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b90613b36906133ac565b5f5260205260405f2090565b613b59613b5e91613b5161258c565b506021613b2c565b6125c5565b90565b90613b6b906105fd565b5f5260205260405f2090565b90565b5490565b5f5260205f2090565b613b9081613b7a565b821015613baa57613ba2600491613b7e565b910201905f90565b613376565b90565b60ff1690565b613bc4613bc991610651565b613bb2565b90565b613bd69054613bb8565b90565b60081c90565b613beb613bf091613bd9565b6125a6565b90565b613bfd9054613bdf565b90565b613c0a6040610ea5565b90565b90613c43613c3a5f613c1d613c00565b94613c34613c2c838301613bcc565b838801612e1d565b01613bf3565b60208401612e2b565b565b613c4e90613c0d565b90565b613c60613c66919392936107e0565b926107e0565b8201809211613c7157565b6127e2565b929192613c94613c8f613c8761204f565b926015613b61565b613b77565b93613c9e85613b7a565b93613ca85f61208b565b5b80613cbc613cb6886107e0565b916107e0565b1015613d5c57613cd6613cd0888390613b87565b50613baf565b613ce15f82016125c5565b613cf3613ced88610553565b91610553565b1480613d2f575b613d0e575b50613d0990613363565b613ca9565b613d099194613d226001613d289301610728565b90613c51565b9390613cff565b50613d44613d3f60028301613c45565b613e5d565b613d56613d50866107bc565b916107bc565b14613cfa565b50935050925050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b613d91614164565b565b613d9b613d89565b565b613da5614164565b565b613daf613d9d565b565b613db9614164565b613dc1613dc3565b565b613dcb6141bf565b565b613dd5613db1565b565b613ddf614164565b613de7613de9565b565b613df1614205565b565b613dfb613dd7565b565b613e079051612e11565b90565b613e149051610553565b90565b613e2090612e11565b90565b613e2c90613e17565b9052565b916020613e51929493613e4a60408201965f830190613e23565b01906113ad565b565b60200190565b5190565b613e65612198565b50613ea7613e806020613e795f8501613dfd565b9301613e0a565b91613e98613e8c6103d4565b93849260208401613e30565b60208201810382520382610e7c565b613eb9613eb382613e59565b91613e53565b2090565b1b90565b91906008613ee1910291613edb60018060a01b0384613ebd565b92613ebd565b9181191691161790565b90565b9190613f04613eff613f0c936105fd565b613eeb565b908354613ec1565b9055565b613f2291613f1c61258c565b91613eee565b565b5f613f33613f38926021613b2c565b613f10565b565b613f4d63ffffffff60e01b5f3516613b42565b80613f68613f62613f5d5f612dd5565b610553565b91610553565b036142435763ffffffff60e01b5f3516614224565b5f63d92e233d60e01b815280613f9560048201610a64565b0390fd5b613fb4905f9182916322a2d07b60e21b8352600483016113ba565b0390fd5b613fc1906103e6565b9052565b916020613fe6929493613fdf60408201965f830190613fb8565b01906113ad565b565b6140025f9283926310ae11a960e31b845260048401613fc5565b0390fd5b9061401760018060a01b039161162a565b9181191691161790565b9061403661403161403d926105fd565b613eeb565b8254614006565b9055565b61405061405592916021613b2c565b614021565b565b91602061407892949361407160408201965f8301906113ad565b01906107bf565b565b9061408f61408983839061261c565b15610433565b614097575050565b6140b15f92839263e2517d3f60e01b845260048401614057565b0390fd5b6140bd61258c565b506140d85f6140d26140cd6124b7565b614261565b016125c5565b90565b906140e582614264565b816141107fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b916105fd565b906141196103d4565b8061412381610a64565b0390a261412f81613e59565b61414161413b5f61208b565b916107e0565b115f146141555761415191614334565b505b565b505061415f6142b9565b614153565b61417561416f614363565b15610433565b61417b57565b5f631afcd79f60e31b81528061419360048201610a64565b0390fd5b61419f614164565b6141a76141a9565b565b6141bd6141b4613b08565b5f809101612ea9565b565b6141c7614197565b565b6141d1614164565b6141d96141e8565b565b6141e56001611a76565b90565b6142036141f3614381565b5f6141fc6141db565b9101612efe565b565b61420d6141c9565b565b9190614222905f60208501940190613fb8565b565b61423f905f91829163c2a825f560e01b83526004830161420f565b0390fd5b5f8091368280378136915af43d5f803e5f1461425d573d5ff35b3d5ffd5b90565b803b6142786142725f61208b565b916107e0565b1461429a57614298905f61429261428d6124b7565b614261565b01614021565b565b6142b5905f918291634c9c8ce360e01b8352600483016113ba565b0390fd5b346142cc6142c65f61208b565b916107e0565b116142d357565b5f63b398979f60e01b8152806142eb60048201610a64565b0390fd5b606090565b9061430661430183610eba565b610ea5565b918252565b3d5f146143265761431b3d6142f4565b903d5f602084013e5b565b61432e6142ef565b90614324565b5f80614360936143426142ef565b508390602081019051915af49061435761430b565b909190916143a5565b90565b61436b61200b565b5061437e5f614378613d65565b01612b6f565b90565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b906143b9906143b26142ef565b5015610433565b5f146143c55750614429565b6143ce82613e59565b6143e06143da5f61208b565b916107e0565b148061440e575b6143ef575090565b61440a905f918291639996b31560e01b8352600483016113ba565b0390fd5b50803b61442361441d5f61208b565b916107e0565b146143e7565b61443281613e59565b61444461443e5f61208b565b916107e0565b115f1461445357805190602001fd5b5f63d6bda27560e01b81528061446b60048201610a64565b0390fdfea164736f6c634300081a000a","sourceMap":"1033:3847:181:-:0;;;;;;;;;-1:-1:-1;1033:3847:181;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;3981:30:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;4797:70:185:-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;1033:3847:181:-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2014:52:177:-;2060:6;;;:::i;:::-;2014:52;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;5347:35:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2192:53:177:-;2239:6;;;:::i;:::-;2192:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1961:47:177:-;2002:6;;;:::i;:::-;1961:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4756:33:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;5194:72:185:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;3036:64:177;3075:25;3036:64;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2072:53:177:-;2119:6;;;:::i;:::-;2072:53;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3188:62:177:-;3226:24;3188:62;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;2970:60:177:-;3007:23;2970:60;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;6608:25:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1751:48:177:-;1792:7;;;:::i;:::-;1751:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1566:44:177:-;1607:3;;;:::i;:::-;1566:44;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3785:26:177:-;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4917:45:185:-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;5041:70:185:-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1698:47:177:-;1738:7;;;:::i;:::-;1698:47;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2317:49:48:-;2362:4;;;:::i;:::-;2317:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3106:76:177:-;3151:31;3106:76;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2131:55:177:-;2180:6;;;:::i;:::-;2131:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1059:40:177:-;1095:4;;;:::i;:::-;1059:40;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;:::o;1819:58:59:-;1870:7;;:::i;:::-;1819:58;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;7488:27:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1616:42:177:-;1657:1;;;:::i;:::-;1616:42;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;4559:37:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1805:50:177:-;1848:7;;;:::i;:::-;1805:50;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5528:55:177:-;5577:6;;;:::i;:::-;5528:55;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;4663:34:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;2437:46:177:-;2479:4;;;:::i;:::-;2437:46;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1105:48:177:-;1147:6;;;:::i;:::-;1105:48;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1861:49:177:-;1902:8;;;:::i;:::-;1861:49;:::o;:::-;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;3888:27:177:-;;;;;;:::i;:::-;;:::o;1033:3847:181:-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;3443:202:48:-;3528:4;;:::i;:::-;3551:11;;:47;;3566:32;;;3551:47;:::i;:::-;;;:::i;:::-;;:87;;;;;3443:202;3544:94;;:::o;3551:87::-;3602:36;3626:11;;3602:36;:::i;:::-;3551:87;;;1033:3847:181;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;18896:223:177:-;19022:41;18896:223;19022:30;:41;18896:223;18986:7;;:::i;:::-;19022:20;;:30;:::i;:::-;:41;:::i;:::-;;:::i;:::-;19080:6;:11;;19090:1;19080:11;:::i;:::-;;;:::i;:::-;;:32;;;;19094:9;;;:::i;:::-;19080:32;19073:39;:::o;19080:32::-;;;1033:3847:181;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;986:179:111:-;1122:36;986:179;1122:36;986:179;;;:::i;:::-;1148:9;1122:36;:::i;:::-;;;:::i;:::-;986:179::o;1033:3847:181:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;4759:191:48:-;4919:24;:14;:24;4759:191;4824:7;;:::i;:::-;4876:26;4919:8;4876:26;;:::i;:::-;4919:8;:14;:::i;:::-;:24;;:::i;:::-;4912:31;:::o;3149:76::-;;3217:1;3149:76;3202:4;5320:18;5333:4;5320:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5246:136::-;;5350:25;5246:136;5350:25;:::i;:::-;;5246:136::o;:::-;;;;;:::i;:::-;:::o;6348:245::-;;6441:18;:34;;6463:12;;:::i;:::-;6441:34;:::i;:::-;;;:::i;:::-;;6437:102;;6549:37;6561:4;6549:37;:::i;:::-;;6348:245::o;6437:102::-;6498:30;;;;;;;;;;;;:::i;:::-;;;;1033:3847:181;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;;;668:256:111;;;:::i;:::-;797:34;;:32;:22;813:5;797:22;:::i;:::-;:32;:::i;:::-;;:34;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;867:12;797:34;;;;;668:256;766:65;860:5;867:12;:::i;:::-;895:22;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;668:256::o;797:34::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;12070:122:184:-;12162:23;;12070:122;12136:7;;:::i;:::-;12162:16;;:23;:::i;:::-;;:::i;:::-;12155:30;:::o;2624:62:59:-;;2678:1;2624:62;;;:::i;:::-;2678:1;:::i;:::-;2624:62::o;4161:214::-;;4363:4;4161:214;4294:17;;;:::i;:::-;4363:4;:::i;:::-;4161:214::o;:::-;;;;;:::i;:::-;:::o;2892:72::-;2956:1;2892:72;;;:::i;:::-;2956:1;:::i;:::-;2892:72;:::o;1033:3847:181:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;763:114:19:-;811:66;;;:::i;:::-;763:114;:::o;3708:134:59:-;3803:32;;;:::i;:::-;3796:39;:::o;3708:134::-;3777:7;;;:::i;:::-;;:::i;:::-;3708:134;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;2692:145:68:-;2739:4;;:::i;:::-;2783:21;2821:9;;2783:21;;:::i;:::-;2821:9;;:::i;:::-;2814:16;:::o;1033:3847:181:-;;;:::o;31082:117:185:-;31171:21;;31082:117;31146:6;;:::i;:::-;31171:11;;:21;:::i;:::-;;:::i;:::-;31164:28;:::o;31638:162::-;31755:38;31638:162;31755:28;:38;31638:162;31730:6;;:::i;:::-;31755:17;;:28;:::i;:::-;:38;:::i;:::-;;:::i;:::-;31748:45;:::o;1033:3847:181:-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;17225:117:178:-;17314:21;;17225:117;17288:7;;:::i;:::-;17314:14;;:21;:::i;:::-;;:::i;:::-;17307:28;:::o;1560:129:111:-;1652:30;1560:129;1626:7;;:::i;:::-;1673:8;1652:30;:::i;:::-;1645:37;:::o;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;3732:207:48:-;3901:31;3732:207;3901:22;:14;:31;3732:207;3809:4;;:::i;:::-;3858:26;;;;:::i;:::-;3901:8;:14;:::i;:::-;:22;:31;:::i;:::-;;:::i;:::-;3894:38;:::o;7409:147:185:-;7513:36;;7409:147;7488:6;;:::i;:::-;7513:26;;:36;:::i;:::-;;:::i;:::-;7506:43;:::o;1033:3847:181:-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;29570:783:185:-;;;;;29758:59;29786:31;29724:18;;:::i;:::-;29786:12;:22;:12;29799:8;29786:22;;:::i;:::-;:31;:::i;:::-;29758:59;:::i;:::-;29831:6;:12;;:6;:12;;:::i;:::-;:17;;29847:1;29831:17;:::i;:::-;;;:::i;:::-;;29827:31;;29954:9;29918:74;29954:9;29965:8;29975:16;;:6;:16;;:::i;:::-;29918:74;;:::i;:::-;30006:15;;:20;;30025:1;30006:20;:::i;:::-;;;:::i;:::-;;30002:34;;30130:25;;:6;:25;;:::i;:::-;:52;;30158:24;;:6;:24;;:::i;:::-;30130:52;:::i;:::-;;;:::i;:::-;;30126:221;;29570:783;;;:::o;30126:221::-;30296:40;30217:6;;;;:52;:6;30245:24;;30217:25;;30297:26;30217:6;:25;;:::i;:::-;30245:6;:24;;:::i;:::-;30217:52;;:::i;:::-;30297:26;;:::i;:::-;30327:9;;:::i;:::-;30296:40;;:::i;:::-;30126:221;;;;;30002:34;30035:1;;;;30028:8;30035:1;30028:8;:::i;:::-;;:::o;29827:31::-;29857:1;;;;;29850:8;29857:1;29850:8;:::i;:::-;;:::o;1033:3847:181:-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;31246:156:185:-;31357:38;31246:156;31364:22;:31;31246:156;31327:18;;:::i;:::-;31364:12;;:22;:::i;:::-;:31;:::i;:::-;31357:38;:::i;:::-;;:::o;1033:3847:181:-;;;;:::i;:::-;;:::o;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;34351:154:185:-;34466:32;34351:154;34473:15;:25;34351:154;34425:29;;:::i;:::-;34473:8;;:15;:::i;:::-;:25;:::i;:::-;34466:32;:::i;:::-;;:::o;32056:170::-;32177:42;32056:170;32177:32;:42;32056:170;32152:6;;:::i;:::-;32177:19;;:32;:::i;:::-;:42;:::i;:::-;;:::i;:::-;32170:49;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;4069:1104:58:-;;;;4191:26;;:::i;:::-;4302:1;4301:16;4302:15;;:1;:15;;:::i;:::-;4301:16;;:::i;:::-;4348:1;:14;;:1;:14;;:::i;:::-;4726:11;:16;;4741:1;4726:16;:::i;:::-;;;:::i;:::-;;:34;;;4069:1104;4790:11;:16;;4805:1;4790:16;:::i;:::-;;;:::i;:::-;;:50;;;4069:1104;4855:13;4770:70;4856:12;4855:13;;:::i;:::-;:30;;;;4069:1104;4851:91;;;5055:1;4968;4951:18;;4968:1;4951:18;:::i;:::-;:14;:1;:14;:18;:::i;:::-;4983:14;4979:67;;4069:1104;5055:1;:::i;:::-;5066:101;;4069:1104;;:::o;5066:101::-;5100:23;5118:5;5100:15;5118:5;5100:1;:15;:23;:::i;:::-;5154:1;5142:14;;;;;:::i;:::-;;;;;;:::i;:::-;;;;5066:101;;;4979:67;5013:22;5031:4;5013:15;:1;:15;:22;:::i;:::-;4979:67;;4851:91;4908:23;;;;;;;;;;;;:::i;:::-;;;;4855:30;4872:13;4873:12;;4872:13;;:::i;:::-;4855:30;;;4790:50;4818:4;4855:13;4810;4818:4;4810:13;:::i;:::-;:25;:30;;4839:1;4810:30;:::i;:::-;;;:::i;:::-;;4790:50;;;;4726:34;4746:14;;4726:34;;1033:3847:181;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1033:3847:181;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;826:56:93:-;876:6;;;:::i;:::-;826:56;:::o;876:6::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1071:52::-;1121:2;;;:::i;:::-;1071:52;:::o;1121:2::-;;;;:::o;:::-;;;1033:3847:181;1121:2:93;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;1191:51::-;1240:2;;;:::i;:::-;1191:51;:::o;1648:1453:181:-;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2003:18;;:::i;:::-;2023:5;1992:37;;;:::i;:::-;;2050:10;;:::i;:::-;2062:5;2039:29;;;:::i;:::-;;2089:18;;:::i;:::-;2109:5;2078:37;;;:::i;:::-;;2204:22;2236:1;2228:10;;;:::i;:::-;2192:47;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2181:59;;;:::i;:::-;2319:4;;2355:22;2406:19;2451:1;2483;2588:15;;;:::i;:::-;2581:23;;;:::i;:::-;2278:337;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;2250:13;2264:10;2250:25;;;:::i;:::-;:365;;;;:::i;:::-;2641:4;2625:20;;;;:::i;:::-;2656:46;;;;:::i;:::-;2727:1;2712:16;;;:::i;:::-;;;;;:::i;:::-;2754:37;;:::i;:::-;2738:53;;;;:::i;:::-;2919:37;;:::i;:::-;2893:63;;;;:::i;:::-;2989:37;;:::i;:::-;2966:60;;;;:::i;:::-;3058:36;;:::i;:::-;3036:58;;;;:::i;:::-;1648:1453::o;:::-;;;;;;;:::i;:::-;:::o;3149:76:48:-;;3217:1;3149:76;3202:4;5737:18;5750:4;5737:18;:::i;:::-;3202:4;:::i;:::-;3217:1;:::i;:::-;3149:76::o;5662:138::-;;5767:26;5662:138;5767:26;:::i;:::-;;5662:138::o;:::-;;;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;1220:285:111:-;;;;;;:::i;:::-;1343:13;1355:1;1343:13;:::i;:::-;1380:3;1358:1;:20;;1362:16;:9;;:16;;:::i;:::-;1358:20;:::i;:::-;;;:::i;:::-;;;;;1380:3;1422:9;:12;;;:9;;1432:1;1422:12;;:::i;:::-;;:::i;:::-;;:::i;:::-;1475;;:9;;1485:1;1475:12;;:::i;:::-;;:::i;:::-;1454:34;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1380:3;:::i;:::-;1343:13;;1358:20;;;;;1220:285::o;3149:76:48:-;;3217:1;3149:76;3202:4;4751:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3217:1;:::i;:::-;3149:76::o;4660:218:181:-;4773:44;4812:5;4773:36;:26;4800:8;4773:36;;:::i;:::-;:44;:::i;:::-;4832:39;;;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;4660:218::o;:::-;;;;;:::i;:::-;:::o;4056:63::-;;:::i;1035:146:71:-;1111:4;;:::i;:::-;1134:11;:40;;1149:25;;;1134:40;:::i;:::-;;;:::i;:::-;;1127:47;:::o;3149:76:48:-;3202:4;3180:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3149:76::o;3107:88:181:-;;;:::i;:::-;:::o;1033:3847::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;1894:602:111:-;;;1987:5;:19;;1996:10;2004:1;1996:10;:::i;:::-;1987:19;:::i;:::-;;;:::i;:::-;;1983:45;;2042:5;:17;:22;;2063:1;2042:22;:::i;:::-;;;:::i;:::-;;2038:54;;2108:13;2120:1;2108:13;:::i;:::-;2145:3;2123:1;:20;;2127:16;:9;:16;:::i;:::-;2123:20;:::i;:::-;;;:::i;:::-;;;;;2183:34;2204:12;;:9;2214:1;2204:12;;:::i;:::-;;:::i;:::-;2183:34;:::i;:::-;2235:8;:22;;2247:10;2255:1;2247:10;:::i;:::-;2235:22;:::i;:::-;;;:::i;:::-;;;:43;;;2145:3;2231:138;;2403:9;2145:3;2403:9;2417:5;2403:12;;:9;2413:1;2403:12;;:::i;:::-;;:::i;:::-;2417:5;;;:::i;:::-;2459:12;;:9;2469:1;2459:12;;:::i;:::-;;:::i;:::-;2473:5;2442:37;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2145:3;:::i;:::-;2108:13;;2231:138;2331:12;;:9;;:12;:::i;:::-;;:::i;:::-;2345:8;:::i;2235:43::-;2261:8;;:17;;2273:5;2261:17;:::i;:::-;;;:::i;:::-;;;2235:43;;2123:20;;;;;1894:602::o;2038:54::-;2086:5;;:::i;1983:45::-;;:::i;2787:177:48:-;2887:71;2787:177;:::o;4148:103::-;4231:12;4148:103;4231:12;;:::i;:::-;;;:::i;:::-;4148:103::o;7270:387::-;7347:4;;:::i;:::-;7396:26;;;:::i;:::-;7436:23;7437:22;7445:4;7451:7;7437:22;;:::i;:::-;7436:23;;:::i;:::-;7432:219;;;;7475:38;7509:4;7475:31;:22;:14;7509:4;;7475:1;:8;7484:4;7475:14;;:::i;:::-;:22;7498:7;7475:31;;:::i;:::-;:38;:::i;:::-;7550:7;7559:12;;:::i;:::-;7532:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;7593:4;7586:11;:::o;7432:219::-;7635:5;;;;7628:12;:::o;887:96:66:-;940:7;;:::i;:::-;966:10;;959:17;:::o;7892:388:48:-;7970:4;;:::i;:::-;8019:26;;;:::i;:::-;8059:22;8067:4;8073:7;8059:22;;:::i;:::-;8055:219;;;;8097:39;8131:5;8097:31;:22;:14;8131:5;;8097:1;:8;8106:4;8097:14;;:::i;:::-;:22;8120:7;8097:31;;:::i;:::-;:39;:::i;:::-;8173:7;8182:12;;:::i;:::-;8155:40;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;8216:4;8209:11;:::o;8055:219::-;8258:5;;;;8251:12;:::o;1033:3847:181:-;;;;:::i;:::-;;:::o;4603:312:59:-;4675:13;4683:4;4675:13;:::i;:::-;:23;;4692:6;4675:23;:::i;:::-;;;:::i;:::-;;:120;;;;4603:312;4658:251;;4603:312::o;4658:251::-;4869:29;;;;;;;;;;;;:::i;:::-;;;;4675:120;4753:32;;;:::i;:::-;:42;;4789:6;4753:42;:::i;:::-;;;:::i;:::-;;;4675:120;;3149:76:48;;3202:4;4368:10:181;;:::i;:::-;3202:4:48;:::i;:::-;3149:76::o;4305:78:181:-;;;;:::i;:::-;:::o;1033:3847::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;6057:538:59:-;;;6156:52;;:50;:36;6174:17;6156:36;:::i;:::-;:50;:::i;:::-;;:52;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;6057:538;6152:437;;;;;;;;;;;;;;6057:538::o;6152:437::-;6518:60;6560:17;6518:60;;;;;;;;;;;;;:::i;:::-;;;;6152:437;6250:4;;:40;;6258:32;;:::i;:::-;6250:40;:::i;:::-;;;:::i;:::-;;6246:120;;6428:4;6409:17;;;6428:4;:::i;:::-;6152:437;;6246:120;6317:34;6346:4;6317:34;;;;;;;;;;;;;:::i;:::-;;;;6156:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;5032:213;5098:13;5106:4;5098:13;:::i;:::-;:23;;5115:6;5098:23;:::i;:::-;;;:::i;:::-;;5094:145;;5032:213::o;5094:145::-;5199:29;4869;;;5199;;;;;;;;:::i;:::-;;;;1147:162:68;1237:66;1147:162;:::o;1033:3847:181:-;;;;;:::i;:::-;;;;;;;;;:::o;3201:139::-;3306:27;;3201:139;3280:7;;:::i;:::-;3306:17;;:27;:::i;:::-;;:::i;:::-;3299:34;:::o;1033:3847::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;30359:667:185:-;;;;30572:71;30620:23;30537:19;;:::i;:::-;30620:12;;:23;:::i;:::-;30572:71;:::i;:::-;30681:11;:18;:11;:18;:::i;:::-;30726:1;30714:13;30726:1;30714:13;:::i;:::-;;30729:1;:21;;30733:17;30729:21;:::i;:::-;;;:::i;:::-;;;;;30767:50;30803:14;:11;30815:1;30803:14;;:::i;:::-;;30767:50;:::i;:::-;30835:10;;:1;:10;;:::i;:::-;:22;;30849:8;30835:22;:::i;:::-;;;:::i;:::-;;:58;;;30714:13;30831:120;;30714:13;30992:3;;;;:::i;:::-;30714:13;;30831:120;30992:3;30928:1;;:8;;30913:23;30928:1;:8;;:::i;:::-;30913:23;;:::i;:::-;30831:120;;;;30835:58;30872:1;30861:19;;30872:7;:1;:7;30861:19;:::i;:::-;;:::i;:::-;:32;;30884:9;30861:32;:::i;:::-;;;:::i;:::-;;30835:58;;30729:21;;;;;;;;30359:667::o;8737:170:58:-;8837:64;8737:170;:::o;6893:76::-;;;:::i;:::-;:::o;2970:67:59:-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;:::o;3231:65:48:-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1836:97:68:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;2684:111:69:-;;;:::i;:::-;:::o;:::-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;16492:204:177:-;16561:7;;:::i;:::-;16664:5;16653:35;16676:11;;16664:10;;:5;:10;;:::i;:::-;16676:5;:11;;:::i;:::-;16653:35;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16643:46;;;;:::i;:::-;;;:::i;:::-;;16636:53;:::o;1033:3847:181:-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;3484:118::-;3561:34;3568:27;3561:34;3484:118;3568:17;:27;:::i;:::-;3561:34;:::i;:::-;3484:118::o;1695:193:111:-;1758:29;1033:3847:181;;;1779:7:111;;;1758:29;:::i;:::-;1801:5;:19;;1810:10;1818:1;1810:10;:::i;:::-;1801:19;:::i;:::-;;;:::i;:::-;;1875:5;1797:56;1033:3847:181;;;1845:7:111;;;;:::i;3608:107:181:-;3678:30;;;;;;;;;;;;:::i;:::-;;;;3721:127;3805:36;3721:127;3805:36;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;3854:196::-;3976:67;;;;;;;;;;;;;;:::i;:::-;;;;1033:3847;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;3346:132::-;3436:27;:35;3346:132;3436:17;;:27;:::i;:::-;:35;:::i;:::-;3346:132::o;1033:3847::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4381:197:48:-;;4468:23;4469:22;4477:4;4483:7;4469:22;;:::i;:::-;4468:23;;:::i;:::-;4464:108;;4381:197;;:::o;4464:108::-;4514:47;;;;;;;;;;;;;;:::i;:::-;;;;1441:138:19;1493:7;;:::i;:::-;1546:19;1519:53;;:47;1546:19;;:::i;:::-;1519:47;:::i;:::-;:53;;:::i;:::-;1512:60;:::o;2264:344::-;;2374:17;;;:::i;:::-;2425;2407:36;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2458:11;:4;:11;:::i;:::-;:15;;2472:1;2458:15;:::i;:::-;;;:::i;:::-;;2454:148;;;;2489:53;2518:17;2489:53;:::i;:::-;;2454:148;2264:344::o;2454:148::-;;;;;:::i;:::-;;;7084:141:58;7150:18;7151:17;;:::i;:::-;7150:18;;:::i;:::-;7146:73;;7084:141::o;7146:73::-;7191:17;;;;;;;;;;;;:::i;:::-;;;;6893:76;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1939:156:68:-;2071:17;2040:21;;:::i;:::-;2071:9;2083:5;2071:1;:9;:17;:::i;:::-;1939:156::o;:::-;;;:::i;:::-;:::o;6893:76:58:-;;;:::i;:::-;6961:1;;:::i;:::-;6893:76::o;1910:40:69:-;1949:1;;;:::i;:::-;1910:40;:::o;2801:183::-;2954:23;2916:28;;:::i;:::-;2954:9;2966:11;;:::i;:::-;2954:1;:9;:23;:::i;:::-;2801:183::o;:::-;;;:::i;:::-;:::o;1033:3847:181:-;;;;;;;;;;;;;:::i;:::-;:::o;4161:138::-;4250:42;4161:138;4250:42;;;;;;;;;;;;;:::i;:::-;;;;2694:388:111;2750:326;2694:388;;2750:326;;;;;;;;;;;;;;;;;;;;;;;;1899:163:34;;:::o;1671:281:19:-;1748:17;:29;:34;;1781:1;1748:34;:::i;:::-;;;:::i;:::-;;1744:119;;1872:73;1928:17;1872:53;:47;1899:19;;:::i;:::-;1872:47;:::i;:::-;:53;:73;:::i;:::-;1671:281::o;1744:119::-;1805:47;1834:17;1805:47;6518:60:59;;;;;;1805:47:19;;;;;;:::i;:::-;;;;6113:122;6163:9;:13;;6175:1;6163:13;:::i;:::-;;;:::i;:::-;;6159:70;;6113:122::o;6159:70::-;6199:19;;;;;;;;;;;;:::i;:::-;;;;1033:3847:181;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;:::i;:::-;;;;3900:253:29;4049:25;3900:253;4091:55;3900:253;3983:12;;:::i;:::-;4049:6;;4069:4;4049:25;;;;;;;;;;;:::i;:::-;4118:6;4126:7;4135:10;4091:55;;:::i;:::-;4084:62;:::o;8487:120:58:-;8537:4;;:::i;:::-;8560:26;:40;;:26;;:::i;:::-;:40;;:::i;:::-;8553:47;:::o;2395:183:69:-;2499:73;2395:183;:::o;4421:582:29:-;;4593:8;4421:582;4565:12;;:::i;:::-;4594:7;4593:8;;:::i;:::-;4589:408;;;;4625:10;;:::i;4589:408::-;4841:17;:10;:17;:::i;:::-;:22;;4862:1;4841:22;:::i;:::-;;;:::i;:::-;;:49;;;4589:408;4837:119;;4976:10;4969:17;:::o;4837:119::-;4917:24;4934:6;4917:24;;;;;;;;;;;;;:::i;:::-;;;;4841:49;4867:6;;:18;:23;;4889:1;4867:23;:::i;:::-;;;:::i;:::-;;4841:49;;5543:487;5674:17;:10;:17;:::i;:::-;:21;;5694:1;5674:21;:::i;:::-;;;:::i;:::-;;5670:354;;;;5799:158;;;;;;5670:354;5994:19;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{},"immutableReferences":{"17075":[{"start":14503,"length":32},{"start":14604,"length":32},{"start":15035,"length":32}]}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","ASSET_MANAGER_ROLE()":"a4b32de8","BPS_DENOMINATOR()":"e1a45218","COMMISSION_CHANGE_DELAY()":"d45ff582","DEFAULT_ADMIN_ROLE()":"a217fddf","LOCK_ONE_MONTH()":"9e870585","LOCK_SIX_MONTHS()":"f3c9b311","LOCK_THREE_MONTHS()":"d27a6f06","LOCK_TWO_MONTHS()":"7df92ada","MIN_LOCK_AMOUNT()":"dd764abf","MULTIPLIER_NONE()":"4962f88f","MULTIPLIER_ONE_MONTH()":"18056dc2","MULTIPLIER_SIX_MONTHS()":"453eccea","MULTIPLIER_THREE_MONTHS()":"a7fa6f98","MULTIPLIER_TWO_MONTHS()":"54de2320","PRECISION()":"aaf5eb68","SLASHER_ROLE()":"5095af64","TANGLE_ROLE()":"602356e3","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","VIRTUAL_ASSETS()":"b6608409","VIRTUAL_SHARES()":"88c47f68","blueprintSlashCount(uint64,address)":"4e9c929a","clearFacetSelectors(bytes4[])":"e07dec29","currentRound()":"8a19c8bc","delegationBondLessDelay()":"ba05bbf5","facetForSelector(bytes4)":"90837ff4","getAccumulatedDust(address)":"49147411","getAssetAdapter(address)":"8a7fe60f","getOperatorSlashFactor(address,bytes32)":"12d91c88","getPendingSlashCount(address)":"9480e4dd","getRoleAdmin(bytes32)":"248a9ca3","getSlashCount(address)":"66c36875","getSlashCountForBlueprint(uint64,address)":"c550d938","getSlashCountForService(uint64,address)":"72b5032d","getSlashImpact(address,uint64,address)":"9494f426","getSlashRecord(address,uint64)":"a457af3d","getSnapshot(uint64,address)":"c07449e2","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,uint256,uint256,uint16)":"cbb6d6bd","lastRoundAdvance()":"05d64e38","leaveDelegatorsDelay()":"db8a173a","leaveOperatorsDelay()":"4de8addc","nativeEnabled()":"77ab2cf3","nextSlashId(address)":"96085673","operatorCommissionBps()":"32273f61","paused()":"5c975abb","proxiableUUID()":"52d1902d","registerFacet(address)":"46d163aa","registerFacetSelectors(address,bytes4[])":"19e82e61","renounceRole(bytes32,address)":"36568abe","requireAdapters()":"b54b2b9e","resetPendingSlashCount(address,uint64)":"e27e05c1","revokeRole(bytes32,address)":"d547741f","roundDuration()":"f7cb789a","serviceSlashCount(uint64,address)":"9722f4b9","slashHistory(address,uint64)":"0aa8b110","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"existingFacet\",\"type\":\"address\"}],\"name\":\"SelectorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"UnknownSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintAddedToDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"delegationIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintRemovedFromDelegation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.BlueprintSelectionMode\",\"name\":\"selectionMode\",\"type\":\"uint8\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DelegatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"estimatedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"DelegatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum Types.LockMultiplier\",\"name\":\"lock\",\"type\":\"uint8\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDust\",\"type\":\"uint256\"}],\"name\":\"DustAccumulated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"ExpiredLocksHarvested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"FacetSelectorCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"FacetSelectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"OperatorBlueprintRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.DelegationMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"OperatorDelegationModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorLeavingScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeft\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorStakeIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorUnstakeExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"OperatorUnstakeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashCountReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashDecremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newCount\",\"type\":\"uint64\"}],\"name\":\"PendingSlashIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"SlashRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"delegatorsSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commitmentCount\",\"type\":\"uint256\"}],\"name\":\"SlashedForService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"readyRound\",\"type\":\"uint64\"}],\"name\":\"WithdrawScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMISSION_CHANGE_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOCK_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_LOCK_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_NONE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_ONE_MONTH\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_SIX_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_THREE_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPLIER_TWO_MONTHS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASHER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TANGLE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_ASSETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VIRTUAL_SHARES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"blueprintSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"clearFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegationBondLessDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"facetForSelector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAccumulatedDust\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAssetAdapter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"}],\"name\":\"getOperatorSlashFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getPendingSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSlashCountForService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getSlashImpact\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lostAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"internalType\":\"struct SlashingManager.SlashRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getSnapshot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDelegated\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.OperatorSnapshot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinOperatorStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeMinDelegation\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_operatorCommissionBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRoundAdvance\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveDelegatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leaveOperatorsDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nextSlashId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCommissionBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"}],\"name\":\"registerFacet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"facet\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"name\":\"registerFacetSelectors\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requireAdapters\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"resetPendingSlashCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceSlashCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"slashHistory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"round\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"assetHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateBefore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exchangeRateAfter\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"L-18 FIX: Zero address provided - kept parameterless for backward compatibility Context is typically clear from the function that reverts\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"details\":\"Individual delegator amounts can be computed: shares * (oldRate - newRate) / PRECISION\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"params\":{\"assetHash\":\"Asset hash for the pool\",\"blueprintId\":\"The blueprint where violation occurred (0 for consensus/native slash)\",\"delegatorsSlashed\":\"Amount slashed from delegator pools (reduces totalAssets)\",\"exchangeRateAfter\":\"Exchange rate after slash (scaled by PRECISION)\",\"operator\":\"The slashed operator\",\"operatorSlashed\":\"Amount slashed from operator's self-stake\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"}},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"commitmentCount\":\"Number of asset commitments that were slashed\",\"operator\":\"The slashed operator\",\"serviceId\":\"The service where violation occurred\",\"totalSlashed\":\"Total amount slashed across all committed assets\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getAccumulatedDust(address)\":{\"params\":{\"token\":\"The token address (address(0) for native)\"},\"returns\":{\"_0\":\"The accumulated dust amount\"}},\"getAssetAdapter(address)\":{\"params\":{\"token\":\"Token address\"},\"returns\":{\"_0\":\"adapter Adapter address (or zero if none)\"}},\"getOperatorSlashFactor(address,bytes32)\":{\"details\":\"Returns PRECISION (1e18) if unset\"},\"getPendingSlashCount(address)\":{\"params\":{\"operator\":\"The operator to query\"},\"returns\":{\"_0\":\"count Number of pending slashes\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getSlashCountForBlueprint(uint64,address)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"operator\":\"The operator address\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in services of this blueprint\"}},\"getSlashCountForService(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"count Number of times operator was slashed in this service\"}},\"getSlashImpact(address,uint64,address)\":{\"params\":{\"delegator\":\"The delegator to check\",\"operator\":\"The operator that was slashed\",\"slashId\":\"The slash event ID\"},\"returns\":{\"lostAmount\":\"Approximate amount lost due to this slash\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,uint256,uint256,uint16)\":{\"params\":{\"_operatorCommissionBps\":\"Operator commission in basis points\",\"admin\":\"Admin address\",\"nativeMinDelegation\":\"Minimum delegation amount\",\"nativeMinOperatorStake\":\"Minimum stake for operators\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"resetPendingSlashCount(address,uint64)\":{\"details\":\"Admin-only recovery function for when count becomes inconsistent\",\"params\":{\"count\":\"The correct pending slash count\",\"operator\":\"The operator to reset\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"MultiAssetDelegation\",\"version\":1},\"userdoc\":{\"events\":{\"DustAccumulated(address,uint256,uint256)\":{\"notice\":\"Emitted when dust is accumulated from rounding\"},\"DustSwept(address,address,uint256)\":{\"notice\":\"Emitted when accumulated dust is swept to treasury\"},\"SlashRecorded(address,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when slash is recorded (for off-chain indexing of per-delegator impact)\"},\"Slashed(address,uint64,uint64,bytes32,uint16,uint256,uint256,uint256)\":{\"notice\":\"Emitted when an operator and their delegators are slashed for an asset\"},\"SlashedForService(address,uint64,uint64,uint256,uint256)\":{\"notice\":\"Emitted when an operator is slashed for a specific service with per-asset commitments\"}},\"kind\":\"user\",\"methods\":{\"COMMISSION_CHANGE_DELAY()\":{\"notice\":\"Timelock delay for commission changes (7 days)\"},\"blueprintSlashCount(uint64,address)\":{\"notice\":\"Slash count per blueprint: blueprintId => operator => count\"},\"clearFacetSelectors(bytes4[])\":{\"notice\":\"Remove selectors from the router\"},\"currentRound()\":{\"notice\":\"Current round number\"},\"delegationBondLessDelay()\":{\"notice\":\"Delay for unstaking delegations (in rounds)\"},\"facetForSelector(bytes4)\":{\"notice\":\"Resolve the facet for a selector\"},\"getAccumulatedDust(address)\":{\"notice\":\"Get accumulated dust for a token\"},\"getAssetAdapter(address)\":{\"notice\":\"Get adapter for a token\"},\"getOperatorSlashFactor(address,bytes32)\":{\"notice\":\"Reserved getter for the historical slash factor (unused with share-based pools)\"},\"getPendingSlashCount(address)\":{\"notice\":\"Get pending slash count for an operator\"},\"getSlashCount(address)\":{\"notice\":\"Get total slashes for an operator\"},\"getSlashCountForBlueprint(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific blueprint\"},\"getSlashCountForService(uint64,address)\":{\"notice\":\"Get slash count for an operator in a specific service\"},\"getSlashImpact(address,uint64,address)\":{\"notice\":\"Calculate how much a delegator lost from a specific slash\"},\"getSlashRecord(address,uint64)\":{\"notice\":\"Get slash record details\"},\"getSnapshot(uint64,address)\":{\"notice\":\"Get snapshot for an operator at a specific round\"},\"initialize(address,uint256,uint256,uint16)\":{\"notice\":\"Initialize the contract\"},\"lastRoundAdvance()\":{\"notice\":\"Timestamp when the last round was advanced\"},\"leaveDelegatorsDelay()\":{\"notice\":\"Delay for delegator withdrawals (in rounds)\"},\"leaveOperatorsDelay()\":{\"notice\":\"Delay for operator exit (in rounds)\"},\"nativeEnabled()\":{\"notice\":\"Whether native asset is enabled\"},\"nextSlashId(address)\":{\"notice\":\"Next slash ID per operator\"},\"operatorCommissionBps()\":{\"notice\":\"Operator commission rate in basis points\"},\"registerFacet(address)\":{\"notice\":\"Register selectors exposed by a facet\"},\"registerFacetSelectors(address,bytes4[])\":{\"notice\":\"Register specific selectors for a facet\"},\"requireAdapters()\":{\"notice\":\"Whether to require adapters for all ERC20 deposits\"},\"resetPendingSlashCount(address,uint64)\":{\"notice\":\"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes\"},\"roundDuration()\":{\"notice\":\"Seconds per round (used for time-based rate limiting)\"},\"serviceSlashCount(uint64,address)\":{\"notice\":\"Slash count per service: serviceId => operator => count\"},\"slashHistory(address,uint64)\":{\"notice\":\"Slash history per operator: operator => slashId => record\"}},\"notice\":\"Router contract for multi-asset staking\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MultiAssetDelegation.sol\":\"MultiAssetDelegation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"src/config/ProtocolConfig.sol\":{\"keccak256\":\"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72\",\"dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C\"]},\"src/facets/FacetRouterBase.sol\":{\"keccak256\":\"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa\",\"dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD\"]},\"src/interfaces/IFacetSelectors.sol\":{\"keccak256\":\"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3\",\"dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo\"]},\"src/interfaces/IRewardsManager.sol\":{\"keccak256\":\"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5\",\"dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k\"]},\"src/interfaces/IServiceFeeDistributor.sol\":{\"keccak256\":\"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3\",\"dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]},\"src/staking/DelegationErrors.sol\":{\"keccak256\":\"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8\",\"dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S\"]},\"src/staking/DelegationManagerLib.sol\":{\"keccak256\":\"0xdc06535c50e676023a4bf20afa0530abd4d1502058560117285bae6df8d39787\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ef5c9986ef25e17a01e5a01453b40e3ab36c3388ef55366d99821f434d2442a\",\"dweb:/ipfs/QmZP1z3ZbfPAPfBrvJ62DQBc1SWsjLtFgNZh4JHsgFjvYh\"]},\"src/staking/DelegationStorage.sol\":{\"keccak256\":\"0xfb2ef97b10763e39707cbc18c8898b633ebb606c86532037d6100b6ca89ff6c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e8518686965866b1f88426937acd961ec64bf80b485f7286a8545f4264c0b2\",\"dweb:/ipfs/QmfCmTLrBEibUj9fviu8qFvRp3UhzYyCAeDPBXUVdSKpgi\"]},\"src/staking/DepositManager.sol\":{\"keccak256\":\"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8\",\"dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3\"]},\"src/staking/MultiAssetDelegation.sol\":{\"keccak256\":\"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2\",\"dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm\"]},\"src/staking/OperatorManager.sol\":{\"keccak256\":\"0x3a1083a9f49ec893bcb4848646f3353d3474b37e1c9ae37fd6661a909dff11a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db06517fcecc9c78f1f2db1f67b73a8b708bdc13c59375ddbf24dc20b41f8c7d\",\"dweb:/ipfs/QmXMSVPiCHcDbpiGcRhQAKCzmXfCPQr4Pt85D6bsifBYKg\"]},\"src/staking/RewardsManager.sol\":{\"keccak256\":\"0x928702abef8c3e521c48a818c79ff81fc76bc7be684513f86eb6887283a12b9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69ab84d46c39768c34afeb34133ae8d1d071841d9922c73c65fef75246388dbe\",\"dweb:/ipfs/QmVQBcEPc9Pu5CWoCspSCzUhpW2mLhB1VTyRuYQddBbavL\"]},\"src/staking/SlashingManager.sol\":{\"keccak256\":\"0x927513d8b847f67a99d1db6c47571f43c61ee36d5f94116b0e9b569fc400caa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c2cd2beb5884d28d4f9ea17bbfc3626f735fc53e4785e2043566055e5dcc515\",\"dweb:/ipfs/QmaHnz9A2PRvQfpsQUmJRkXHyD9piq4jg4s8tKpbashPzL\"]},\"src/staking/adapters/IAssetAdapter.sol\":{\"keccak256\":\"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44\",\"dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"NotAContract"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"existingFacet","type":"address"}],"type":"error","name":"SelectorAlreadyRegistered"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"UnknownSelector"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintAddedToDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"uint256","name":"delegationIndex","type":"uint256","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false}],"type":"event","name":"BlueprintRemovedFromDelegation","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"enum Types.BlueprintSelectionMode","name":"selectionMode","type":"uint8","indexed":false}],"type":"event","name":"Delegated","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DelegatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"shares","type":"uint256","indexed":false},{"internalType":"uint256","name":"estimatedAmount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"DelegatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"enum Types.LockMultiplier","name":"lock","type":"uint8","indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalDust","type":"uint256","indexed":false}],"type":"event","name":"DustAccumulated","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DustSwept","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalAmount","type":"uint256","indexed":false}],"type":"event","name":"ExpiredLocksHarvested","anonymous":false},{"inputs":[{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetRegistered","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"FacetSelectorCleared","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"address","name":"facet","type":"address","indexed":true}],"type":"event","name":"FacetSelectorSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintAdded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"OperatorBlueprintRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum Types.DelegationMode","name":"mode","type":"uint8","indexed":false}],"type":"event","name":"OperatorDelegationModeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorLeavingScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeft","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorStakeIncreased","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorUnstakeExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"OperatorUnstakeScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorWhitelistUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashCountReset","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashDecremented","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"newCount","type":"uint64","indexed":false}],"type":"event","name":"PendingSlashIncremented","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"SlashRecorded","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"bytes32","name":"assetHash","type":"bytes32","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint256","name":"operatorSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"delegatorsSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256","indexed":false}],"type":"event","name":"Slashed","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"totalSlashed","type":"uint256","indexed":false},{"internalType":"uint256","name":"commitmentCount","type":"uint256","indexed":false}],"type":"event","name":"SlashedForService","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"readyRound","type":"uint64","indexed":false}],"type":"event","name":"WithdrawScheduled","anonymous":false},{"inputs":[{"internalType":"address","name":"delegator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMISSION_CHANGE_DELAY","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_ONE_MONTH","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_SIX_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_THREE_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LOCK_TWO_MONTHS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_LOCK_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_NONE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_ONE_MONTH","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_SIX_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_THREE_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MULTIPLIER_TWO_MONTHS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASHER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TANGLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_ASSETS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VIRTUAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"blueprintSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"clearFacetSelectors"},{"inputs":[],"stateMutability":"view","type":"function","name":"currentRound","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"delegationBondLessDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"facetForSelector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAccumulatedDust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"getAssetAdapter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getOperatorSlashFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getPendingSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForBlueprint","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashCountForService","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"address","name":"delegator","type":"address"}],"stateMutability":"view","type":"function","name":"getSlashImpact","outputs":[{"internalType":"uint256","name":"lostAmount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashRecord","outputs":[{"internalType":"struct SlashingManager.SlashRecord","name":"","type":"tuple","components":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getSnapshot","outputs":[{"internalType":"struct Types.OperatorSnapshot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"totalDelegated","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"nativeMinOperatorStake","type":"uint256"},{"internalType":"uint256","name":"nativeMinDelegation","type":"uint256"},{"internalType":"uint16","name":"_operatorCommissionBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastRoundAdvance","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveDelegatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leaveOperatorsDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nextSlashId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCommissionBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerFacet"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"nonpayable","type":"function","name":"registerFacetSelectors"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"requireAdapters","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"resetPendingSlashCount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"roundDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"serviceSlashCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"slashHistory","outputs":[{"internalType":"uint64","name":"round","type":"uint64"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes32","name":"assetHash","type":"bytes32"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"exchangeRateBefore","type":"uint256"},{"internalType":"uint256","name":"exchangeRateAfter","type":"uint256"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getAccumulatedDust(address)":{"params":{"token":"The token address (address(0) for native)"},"returns":{"_0":"The accumulated dust amount"}},"getAssetAdapter(address)":{"params":{"token":"Token address"},"returns":{"_0":"adapter Adapter address (or zero if none)"}},"getOperatorSlashFactor(address,bytes32)":{"details":"Returns PRECISION (1e18) if unset"},"getPendingSlashCount(address)":{"params":{"operator":"The operator to query"},"returns":{"_0":"count Number of pending slashes"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getSlashCountForBlueprint(uint64,address)":{"params":{"blueprintId":"The blueprint ID","operator":"The operator address"},"returns":{"_0":"count Number of times operator was slashed in services of this blueprint"}},"getSlashCountForService(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"count Number of times operator was slashed in this service"}},"getSlashImpact(address,uint64,address)":{"params":{"delegator":"The delegator to check","operator":"The operator that was slashed","slashId":"The slash event ID"},"returns":{"lostAmount":"Approximate amount lost due to this slash"}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,uint256,uint256,uint16)":{"params":{"_operatorCommissionBps":"Operator commission in basis points","admin":"Admin address","nativeMinDelegation":"Minimum delegation amount","nativeMinOperatorStake":"Minimum stake for operators"}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"resetPendingSlashCount(address,uint64)":{"details":"Admin-only recovery function for when count becomes inconsistent","params":{"count":"The correct pending slash count","operator":"The operator to reset"}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMISSION_CHANGE_DELAY()":{"notice":"Timelock delay for commission changes (7 days)"},"blueprintSlashCount(uint64,address)":{"notice":"Slash count per blueprint: blueprintId => operator => count"},"clearFacetSelectors(bytes4[])":{"notice":"Remove selectors from the router"},"currentRound()":{"notice":"Current round number"},"delegationBondLessDelay()":{"notice":"Delay for unstaking delegations (in rounds)"},"facetForSelector(bytes4)":{"notice":"Resolve the facet for a selector"},"getAccumulatedDust(address)":{"notice":"Get accumulated dust for a token"},"getAssetAdapter(address)":{"notice":"Get adapter for a token"},"getOperatorSlashFactor(address,bytes32)":{"notice":"Reserved getter for the historical slash factor (unused with share-based pools)"},"getPendingSlashCount(address)":{"notice":"Get pending slash count for an operator"},"getSlashCount(address)":{"notice":"Get total slashes for an operator"},"getSlashCountForBlueprint(uint64,address)":{"notice":"Get slash count for an operator in a specific blueprint"},"getSlashCountForService(uint64,address)":{"notice":"Get slash count for an operator in a specific service"},"getSlashImpact(address,uint64,address)":{"notice":"Calculate how much a delegator lost from a specific slash"},"getSlashRecord(address,uint64)":{"notice":"Get slash record details"},"getSnapshot(uint64,address)":{"notice":"Get snapshot for an operator at a specific round"},"initialize(address,uint256,uint256,uint16)":{"notice":"Initialize the contract"},"lastRoundAdvance()":{"notice":"Timestamp when the last round was advanced"},"leaveDelegatorsDelay()":{"notice":"Delay for delegator withdrawals (in rounds)"},"leaveOperatorsDelay()":{"notice":"Delay for operator exit (in rounds)"},"nativeEnabled()":{"notice":"Whether native asset is enabled"},"nextSlashId(address)":{"notice":"Next slash ID per operator"},"operatorCommissionBps()":{"notice":"Operator commission rate in basis points"},"registerFacet(address)":{"notice":"Register selectors exposed by a facet"},"registerFacetSelectors(address,bytes4[])":{"notice":"Register specific selectors for a facet"},"requireAdapters()":{"notice":"Whether to require adapters for all ERC20 deposits"},"resetPendingSlashCount(address,uint64)":{"notice":"H-1 FIX: Reset pending slash count when it drifts from actual pending slashes"},"roundDuration()":{"notice":"Seconds per round (used for time-based rate limiting)"},"serviceSlashCount(uint64,address)":{"notice":"Slash count per service: serviceId => operator => count"},"slashHistory(address,uint64)":{"notice":"Slash history per operator: operator => slashId => record"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/MultiAssetDelegation.sol":"MultiAssetDelegation"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866","urls":["bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf","dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"src/config/ProtocolConfig.sol":{"keccak256":"0x808b5641554923d4adef9d2f183c3aa4bc7c13ee3246aba834467a739fb11c7c","urls":["bzz-raw://666f9d12b93e5569650d02a2ff4b48323b9a78df34030e17abeb6a989d12bb72","dweb:/ipfs/QmRhLxogo9iU82HKSCsyibFtog7NGAgBqK8XFRcjVK8r6C"],"license":"MIT"},"src/facets/FacetRouterBase.sol":{"keccak256":"0x1ee828caa24010fb394785560099b30e3ae8029670541422950e53a0fbe4bc8e","urls":["bzz-raw://60b734f7c8ef31ce27d27cf8d3e2ebdec1a643164231bae6af06cc3b380c6cfa","dweb:/ipfs/Qmddq6SmDvpFghfCWugA67omCbxeAmwKedoxDVbeyRN8DD"],"license":"MIT"},"src/interfaces/IFacetSelectors.sol":{"keccak256":"0x40f3b342132fb05c532582f892c9770741574faec41902ec64e1d44848cdd3b4","urls":["bzz-raw://fc36a0c26902bab2cff79e3a710a99b7cfcaa33879398737a2b21dfef2c0fcf3","dweb:/ipfs/QmTUQNuvgGuRRuXycvtYDB5h2FUYM1u5gtcedeVNokbYBo"],"license":"MIT"},"src/interfaces/IRewardsManager.sol":{"keccak256":"0x4d875d7ac7b94babb254ec8fedeeaeda1f71559bb47dd6ed228b1a7047c9e6a9","urls":["bzz-raw://8d53a27f78d0256bc459dea8c5474c78ed416fab01402b9041b6c5f846d920b5","dweb:/ipfs/Qmbd9QF4PvbTMP89Dx3Knn64dWPDBfPu7p4qYBkUeJAd5k"],"license":"MIT"},"src/interfaces/IServiceFeeDistributor.sol":{"keccak256":"0x0ca2caed089e5a1b01733dbfdede530c73171ce4e9dfdc27717fcafbc0dace6a","urls":["bzz-raw://5324f16a90dd2616ea8f845c40cc50819c026cab85e6b938f5b9a56069dfa8a3","dweb:/ipfs/QmTVhSitL3Y4YDFVzFr4XWgUHUoorGbAkPcKJJbPU61qFT"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"},"src/staking/DelegationErrors.sol":{"keccak256":"0xdb98e127f1b82a19f5da21f383b485053e0faa12153778512668a349b6758aa8","urls":["bzz-raw://4dff63a994f9dfa47e6b842186ef10f563d8515d95f95d31a63489432704eab8","dweb:/ipfs/QmVLTrFqpYnELss9FgLdAndNRyWt86TjVMbNyMqXZt3c8S"],"license":"MIT"},"src/staking/DelegationManagerLib.sol":{"keccak256":"0xdc06535c50e676023a4bf20afa0530abd4d1502058560117285bae6df8d39787","urls":["bzz-raw://5ef5c9986ef25e17a01e5a01453b40e3ab36c3388ef55366d99821f434d2442a","dweb:/ipfs/QmZP1z3ZbfPAPfBrvJ62DQBc1SWsjLtFgNZh4JHsgFjvYh"],"license":"MIT"},"src/staking/DelegationStorage.sol":{"keccak256":"0xfb2ef97b10763e39707cbc18c8898b633ebb606c86532037d6100b6ca89ff6c9","urls":["bzz-raw://81e8518686965866b1f88426937acd961ec64bf80b485f7286a8545f4264c0b2","dweb:/ipfs/QmfCmTLrBEibUj9fviu8qFvRp3UhzYyCAeDPBXUVdSKpgi"],"license":"MIT"},"src/staking/DepositManager.sol":{"keccak256":"0xc050a1f45a32124590f152fd075e229746806ef1de05479ea32b776ce19a0248","urls":["bzz-raw://29de52025eb131ee4d79036779452c89028c30bf6835b628f4851afbea26dfd8","dweb:/ipfs/QmXRSDFnfBfYyKyosV9M9RAeRTviNXox3jYZGDmG4A75i3"],"license":"MIT"},"src/staking/MultiAssetDelegation.sol":{"keccak256":"0x9b88c3b7fa562b407ac88fbe9e50ceef3994d891b082d58247c4c4a740df6a99","urls":["bzz-raw://9d14af3103732b0070cb3cd10fe5150122f45d28e5ea0003107d0988e2350ea2","dweb:/ipfs/QmfF9srqmECCWgeUGcedmSHSrAnKV4JXxMhT4GQqkyEcnm"],"license":"MIT"},"src/staking/OperatorManager.sol":{"keccak256":"0x3a1083a9f49ec893bcb4848646f3353d3474b37e1c9ae37fd6661a909dff11a9","urls":["bzz-raw://db06517fcecc9c78f1f2db1f67b73a8b708bdc13c59375ddbf24dc20b41f8c7d","dweb:/ipfs/QmXMSVPiCHcDbpiGcRhQAKCzmXfCPQr4Pt85D6bsifBYKg"],"license":"MIT"},"src/staking/RewardsManager.sol":{"keccak256":"0x928702abef8c3e521c48a818c79ff81fc76bc7be684513f86eb6887283a12b9d","urls":["bzz-raw://69ab84d46c39768c34afeb34133ae8d1d071841d9922c73c65fef75246388dbe","dweb:/ipfs/QmVQBcEPc9Pu5CWoCspSCzUhpW2mLhB1VTyRuYQddBbavL"],"license":"MIT"},"src/staking/SlashingManager.sol":{"keccak256":"0x927513d8b847f67a99d1db6c47571f43c61ee36d5f94116b0e9b569fc400caa3","urls":["bzz-raw://5c2cd2beb5884d28d4f9ea17bbfc3626f735fc53e4785e2043566055e5dcc515","dweb:/ipfs/QmaHnz9A2PRvQfpsQUmJRkXHyD9piq4jg4s8tKpbashPzL"],"license":"MIT"},"src/staking/adapters/IAssetAdapter.sol":{"keccak256":"0xd454eaaa529503ea2fffb926279300975ab0a327ece77d150926b0e07aabb061","urls":["bzz-raw://c41f8e3e4b11c4f1cf9eb1681ffb4cd89beaf180433b0930098f6ea84c049e44","dweb:/ipfs/QmPsguZ8XqaQv7EgYxyMaSHgxA9z2FGSrvamcAPiR95jnW"],"license":"MIT"}},"version":1},"id":181} \ No newline at end of file diff --git a/bindings/abi/OperatorStatusRegistry.json b/bindings/abi/OperatorStatusRegistry.json index 7de4cb63..38863688 100644 --- a/bindings/abi/OperatorStatusRegistry.json +++ b/bindings/abi/OperatorStatusRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617b106104d38239608051818181610edf0152613936015260a051818181611460015281816126cd015281816134370152818161574e015261630b0152617b1090f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617fe38038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:183:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;13060:465::-;;;;;:::i;:::-;13147:24;;13252:95;13224:284;13365:35;13418:14;13224:284;13418:14;13450:13;13481;13489:4;13481:13;:::i;:::-;13224:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13201:317;;;;:::i;:::-;;;:::i;:::-;;13182:336;;13060:465::o;984:1491:3:-;;;;:::i;:::-;:::o;6415:38701:183:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:2:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:183;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:38701:183:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:183:-:0;;;;;;;;;-1:-1:-1;6415:38701:183;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;11660:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:38701;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7851:61::-;7903:9;;;:::i;:::-;7851:61;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;12224:30::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14180:52::-;14223:9;;;:::i;:::-;14180:52;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8133:41::-;;;:::o;6415:38701::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;12352:53::-;12398:7;;;:::i;:::-;12352:53;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10898:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:183;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;39843:43::-;39883:3;;;:::i;:::-;39843:43;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;11530:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;12045:35::-;;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32979:51::-;33028:2;;;:::i;:::-;32979:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7980:55::-;8034:1;;;:::i;:::-;7980:55;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;33154:51::-;33203:2;;;:::i;:::-;33154:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;11816:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;12131:29::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10758:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8447:189::-;8492:144;8447:189;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30254:263::-;30478:24;:32;30254:263;30336:53;30344:10;:24;;30358:10;30344:24;:::i;:::-;;;:::i;:::-;;30336:53;:::i;:::-;30399:69;30407:24;;:13;30421:9;30407:24;;:::i;:::-;;:::i;:::-;:38;;30435:10;30443:1;30435:10;:::i;:::-;30407:38;:::i;:::-;;;:::i;:::-;;30399:69;:::i;:::-;30478:13;;:24;:::i;:::-;:32;:::i;:::-;30254:263::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;37647:147::-;37766:21;37647:147;37725:22;;:::i;:::-;37777:9;37766:21;:::i;:::-;37759:28;:::o;6415:38701::-;;;:::o;36547:176::-;36667:35;:49;36547:176;36667:25;:49;36547:176;36641:7;;:::i;:::-;36667:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;36660:56;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:183;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33980:640::-;;;;;34097:68;34105:10;:38;;34119:24;;:13;34133:9;34119:24;;:::i;:::-;;:::i;:::-;34105:38;:::i;:::-;;;:::i;:::-;;34097:68;:::i;:::-;34175:77;34183:18;:11;;:18;;:::i;:::-;:44;;34205:22;;:::i;:::-;34183:44;:::i;:::-;;;:::i;:::-;;;34175:77;:::i;:::-;34262:32;;34269:25;:14;34284:9;34269:25;;:::i;:::-;34262:32;:::i;:::-;34309:13;34321:1;34309:13;:::i;:::-;34348:3;34324:1;:22;;34328:18;:11;;:18;;:::i;:::-;34324:22;:::i;:::-;;;:::i;:::-;;;;;34348:3;34381:11;34367:85;34375:33;:26;34381:19;:14;:11;;34393:1;34381:14;;:::i;:::-;:19;;;;;:::i;:::-;34375:26;;:::i;:::-;:33;;:::i;:::-;:59;;34412:22;;:::i;:::-;34375:59;:::i;:::-;;;:::i;:::-;;;34367:85;:::i;:::-;34466:77;34474:23;;:14;:11;;34486:1;34474:14;;:::i;:::-;:23;;:::i;:::-;:50;;34501:23;;:14;:11;;34513:1;34501:14;;:::i;:::-;:23;;:::i;:::-;34474:50;:::i;:::-;;;:::i;:::-;;;34466:77;:::i;:::-;34557:46;:30;:25;:14;34572:9;34557:25;;:::i;:::-;:30;:::i;:::-;34588:14;:11;;34600:1;34588:14;;:::i;:::-;34557:46;;:::i;:::-;34348:3;:::i;:::-;34309:13;;34324:22;;;;;;33980:640::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30760:1036::-;30850:53;30858:10;:24;;30872:10;30858:24;:::i;:::-;;;:::i;:::-;;30850:53;:::i;:::-;30913:47;30921:8;:22;;30933:10;30941:1;30933:10;:::i;:::-;30921:22;:::i;:::-;;;:::i;:::-;;;30913:47;:::i;:::-;30970:76;30978:45;:35;:31;:20;30999:9;30978:31;;:::i;:::-;:35;:::i;:::-;31014:8;30978:45;;:::i;:::-;30970:76;:::i;:::-;31439:42;;31446:35;:25;:14;31461:9;31446:25;;:::i;:::-;31472:8;31446:35;;:::i;:::-;31439:42;:::i;:::-;31672:63;31717:18;31672:42;:35;:25;:14;31687:9;31672:25;;:::i;:::-;31698:8;31672:35;;:::i;:::-;:42;:63;:::i;:::-;31780:8;31750:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30760:1036::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34923:188:183:-;35078:26;34923:188;35078:26;;:::i;:::-;34923:188::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;7140:166;;7298:1;7140:166;;;;;;;7200:88;7208:52;:40;:31;15071:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;15100:9;:27;;15112:15;15100:27;:::i;:::-;;;:::i;:::-;;15096:95;;15205:27;:15;:27;15223:9;15205:27;:::i;:::-;;;:::i;:::-;:47;;15235:17;;:::i;:::-;15205:47;:::i;:::-;;;:::i;:::-;;15201:135;;15921:7;15418:18;;15759:25;15794:50;15418:18;;15390:235;15418:18;15390:235;15418:18;15759:25;15418:18;;;15566;15418;;:::i;:::-;15454:10;;15482:9;15509:11;15538:10;15576:7;15566:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;15602:9;15390:235;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15367:268;;;;:::i;:::-;;;:::i;:::-;;15672:58;15701:16;15672:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15662:69;;;;:::i;:::-;;;:::i;:::-;;15774:9;15759:25;:::i;:::-;;;:::i;:::-;15802:20;;15812:10;15802:20;:::i;:::-;;;:::i;:::-;;15794:50;:::i;:::-;15884:11;15897:10;15909;15921:7;;;;:::i;:::-;14803:1133::o;15201:135::-;15301:23;15308:15;15301:23;:::i;:::-;15275:50;;;;;;;;;;;;;;;:::i;:::-;;;;15096:95;15167:23;15174:15;15167:23;:::i;:::-;15136:55;;;;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;35274:160::-;;35392:35;35274:160;35348:25;;:::i;:::-;35403:7;;35392:35;;;;:::i;:::-;35385:42;:::o;43895:136::-;43991:31;:24;:33;43895:136;43965:7;;:::i;:::-;43991:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;43984:40;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;37041:359::-;;37119:16;;:::i;:::-;37163;:36;:34;:27;:16;37180:9;37163:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37249:5;37235:20;37249:5;37235:20;:::i;:::-;37282:1;37270:13;37282:1;37270:13;:::i;:::-;37296:3;37285:1;:9;;37289:5;37285:9;:::i;:::-;;;:::i;:::-;;;;;37296:3;37327:16;37315:45;37327:33;:30;:27;:16;37344:9;37327:27;;:::i;:::-;:30;:::i;:::-;37358:1;37327:33;;:::i;:::-;37315:45;:6;37322:1;;37315:45;;;:::i;:::-;;:::i;:::-;37296:3;:::i;:::-;37270:13;;37285:9;;;;;37380:13;:::o;6415:38701::-;;;:::o;35990:261::-;;36076:4;;:::i;:::-;36099:14;:42;;:35;:25;:14;36114:9;36099:25;;:::i;:::-;36125:8;36099:35;;:::i;:::-;:42;;:::i;:::-;:64;;36145:18;36099:64;:::i;:::-;;;:::i;:::-;;:145;;;;;35990:261;36092:152;;;:::o;36099:145::-;36179:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;36225:19;36179:65;:::i;:::-;;;:::i;:::-;;36099:145;;;;40097:200;40231:59;40097:200;40178:26;;:::i;:::-;40262:9;40273:1;40276:13;40231:59;40276:13;;:::i;:::-;40231:59;;:::i;:::-;;;:::i;:::-;40216:74;40097:200;:::o;7140:166::-;;7298:1;7140:166;;;;7200:88;7208:52;:40;:31;16286:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;16072:320::-;;16377:7;16072:320;;;;16353:10;16365;16377:7;;;;:::i;:::-;16072:320::o;:::-;;;;;;;;:::i;:::-;:::o;32433:178::-;;32554:40;:31;:50;32433:178;32531:4;;:::i;:::-;32554:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;32547:57;:::o;6415:38701::-;;;:::o;36307:173::-;36431:35;:42;36307:173;36431:25;:42;36307:173;36402:10;;:::i;:::-;36431:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;36424:49;:::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;20231:2843::-;;;;;20414:53;20422:10;:27;;20436:13;20444:4;20436:13;:::i;:::-;20422:27;:::i;:::-;;;:::i;:::-;;20414:53;:::i;:::-;20478:66;20519:25;:14;20534:9;20519:25;;:::i;:::-;20478:66;:::i;:::-;20651:8;20637:23;20651:8;20637:23;:::i;:::-;20687:1;20675:13;20687:1;20675:13;:::i;:::-;20704:3;20690:1;:12;;20694:8;20690:12;:::i;:::-;;;:::i;:::-;;;;;20704:3;20755:5;20723:47;20749:20;20755:13;:8;:5;20761:1;20755:8;;:::i;:::-;;:13;;20749:20;:::i;:::-;20739:31;;;;:::i;:::-;;;:::i;:::-;;20723:47;:10;20734:1;;20723:47;;;:::i;:::-;;:::i;:::-;20704:3;:::i;:::-;20675:13;;20690:12;;;;;;;20813:18;:11;:18;:::i;:::-;:22;;20834:1;20813:22;:::i;:::-;;;:::i;:::-;;20914:26;;;:::i;:::-;20954:14;;20950:237;;20670:111;21267:13;21279:1;21267:13;:::i;:::-;21296:3;21282:1;:12;;21286:8;21282:12;:::i;:::-;;;:::i;:::-;;;;;21328:4;21371:5;21449:14;21445:737;;21296:3;22244:5;;;;;21296:3;22244:5;22240:198;;21296:3;;;;;:::i;:::-;21267:13;;22240:198;22320:5;22303:13;:8;22269:33;:48;22320:5;22269:23;22320:14;;:8;22269:65;22320:5;22326:1;22320:8;;:::i;:::-;;:14;;:::i;:::-;22269:12;;:23;:::i;:::-;:33;:::i;:::-;22303:5;22309:1;22303:8;;:::i;:::-;;:13;;22269:48;;:::i;:::-;:65;:::i;:::-;22372:9;;22383:8;22393:5;22408:14;;:8;22393:13;:8;:5;22399:1;22393:8;;:::i;:::-;;:13;;22408:5;22414:1;22408:8;;:::i;:::-;;:14;;:::i;:::-;22357:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;22240:198;;;;;21445:737;21500:1;;;;;;21488:13;21500:1;21488:13;:::i;:::-;21527:3;21503:1;:22;;21507:18;:11;:18;:::i;:::-;21503:22;:::i;:::-;;;:::i;:::-;;;;;21558:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;21575:12;;:9;21585:1;21575:12;;:::i;:::-;;:::i;:::-;21558:29;:::i;:::-;;;:::i;:::-;;21554:433;;21527:3;;;:::i;:::-;21488:13;;21554:433;21635:4;;;;;;;21296:3;21635:4;;;;;;21669:5;;:14;;:8;:5;21675:1;21669:8;;:::i;:::-;;:14;;:::i;:::-;:40;;21686:23;;:14;:11;21698:1;21686:14;;:::i;:::-;;:23;;:::i;:::-;21669:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;21554:433;21665:269;;;;;;21554:433;22094:18;21959:5;21483:522;22094:18;;:::i;:::-;22090:78;;21483:522;21445:737;;;;;;;22090:78;22144:5;;22090:78;;21665:269;21806:9;;;21817:8;21827:13;:8;:5;21833:1;21827:8;;:::i;:::-;;:13;;21790:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22094:18;21902:5;21665:269;;;;;21669:84;21713:40;:5;;;21730:14;21713:40;:5;:14;;:8;21730:23;21713:5;21730:23;21713:5;:8;:::i;:::-;;:14;;:::i;:::-;21730:11;:14;:::i;:::-;;:23;;:::i;:::-;21713:40;:::i;:::-;;;:::i;:::-;;21669:84;;;;;;21503:22;;;;;;;21296:3;21503:22;;;22094:18;21503:22;;;;21282:12;;;;;;;;;;22509:13;22521:1;22509:13;:::i;:::-;22504:564;22548:3;22524:1;:22;;22528:18;:11;:18;:::i;:::-;22524:22;:::i;:::-;;;:::i;:::-;;;;;22571:24;22572:23;;:14;:11;22584:1;22572:14;;:::i;:::-;;:23;;:::i;:::-;22571:24;;:::i;:::-;22567:38;;22638:37;22648:26;22654:19;:14;:11;22666:1;22654:14;;:::i;:::-;;:19;22648:26;:::i;:::-;22638:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;22702:5;;22738:1;22726:13;22738:1;22726:13;:::i;:::-;22764:3;22741:1;:21;;22745:17;:10;:17;:::i;:::-;22741:21;:::i;:::-;;;:::i;:::-;;;;;22791:13;;:10;22802:1;22791:13;;:::i;:::-;;:::i;:::-;:24;;22808:7;22791:24;:::i;:::-;;;:::i;:::-;;22787:110;;22764:3;;;:::i;:::-;22726:13;;22787:110;22847:4;;;;;22548:3;22847:4;;22928:6;22847:4;22721:190;22928:6;;:::i;:::-;22924:134;;22721:190;22509:13;22548:3;:::i;:::-;22509:13;;;;22924:134;22975:9;22986:8;22996:19;:14;:11;23008:1;22996:14;;:::i;:::-;;:19;22959:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22924:134;;22741:21;;;;;22548:3;22741:21;;22928:6;22741:21;;;22567:38;22597:8;;22548:3;22597:8;;;22524:22;;;;;;20231:2843::o;20950:237::-;21010:11;;;;20996:33;21010:18;:11;;;;;;:18;:::i;:::-;20996:33;:::i;:::-;21060:1;21048:13;21060:1;21048:13;:::i;:::-;21087:3;21063:1;:22;;21067:18;:11;:18;:::i;:::-;21063:22;:::i;:::-;;;:::i;:::-;;;;;21087:3;21141:11;21110:52;21125:37;21135:26;21141:19;:14;:11;21153:1;21141:14;;:::i;:::-;;:19;21135:26;:::i;:::-;21125:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;21110:52;:9;21120:1;;21110:52;;;:::i;:::-;;:::i;:::-;21087:3;:::i;:::-;21048:13;;21063:22;;;;;;;;;;20950:237;;1500:62:2;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:38701:183:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;36769:211::-;36931:42;36769:211;36938:25;:35;36769:211;36895:20;;:::i;:::-;36938:14;;:25;:::i;:::-;:35;:::i;:::-;36931:42;:::i;:::-;;:::o;6415:38701::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;44950:164::-;45068:39;44950:164;45068:29;:39;44950:164;45043:6;;:::i;:::-;45068:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;45061:46;:::o;2244:229:3:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;37448:142:183;37547:34;:27;:36;37448:142;37521:7;;:::i;:::-;37547:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37540:43;:::o;6415:38701::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;40660:780::-;;;;;40824:26;;:::i;:::-;40852:13;;;:::i;:::-;40924:9;40913:21;40924:9;40913:21;:::i;:::-;40952:13;:33;:31;:24;:13;40966:9;40952:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;41000:6;:16;;:6;:16;;:::i;:::-;:21;;41020:1;41000:21;:::i;:::-;;;:::i;:::-;;:35;;;;40660:780;41000:54;;;;40660:780;40996:117;;41143:52;41151:6;41170:25;41178:16;;41143:24;41151:15;;41372:61;41151:6;;;:15;;:::i;:::-;41143:24;:::i;:::-;41178:6;:16;;:::i;:::-;41170:25;:::i;:::-;41143:52;;:::i;:::-;41225:5;;:21;;41233:13;;:::i;:::-;41225:21;:::i;:::-;;;:::i;:::-;;:45;;;;41249:13;;;:::i;:::-;41225:45;41294:18;:6;41303:9;41294:18;;:::i;:::-;:26;;41315:5;41294:26;:::i;:::-;;;:::i;:::-;;:55;;;;41323:5;;41294:55;41399:9;41410:6;41418:3;41423:9;41372:61;;:::i;:::-;40660:780;:::o;41294:55::-;41331:18;:6;;:18;:::i;:::-;41294:55;;41225:45;;;40996:117;41092:1;;;;;41078:16;;41092:1;41078:16;:::i;:::-;;:::i;:::-;41070:32;;:::o;41000:54::-;41039:6;;:15;;41049:5;41039:15;:::i;:::-;;;:::i;:::-;;;41000:54;;:35;41025:5;;:10;;41034:1;41025:10;:::i;:::-;;;:::i;:::-;;41000:35;;1500:62:2;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34670:182:183:-;34822:23;34670:182;34822:23;;:::i;:::-;34670:182::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;1638:85:2:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:38701:183:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;26227:224;;;;;26329:13;26341:1;26329:13;:::i;:::-;26366:3;26344:1;:20;;26348:16;:9;;:16;;:::i;:::-;26344:20;:::i;:::-;;;:::i;:::-;;;;;26385:24;:4;:24;:::i;:::-;;;26410:9;26421:12;;:9;;26431:1;26421:12;;:::i;:::-;;:::i;:::-;26385:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26366:3;26385:49;;;26366:3;;;:::i;:::-;26329:13;;26385:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;26344:20::-;;;;;;26227:224::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;44113:757::-;44228:60;44236:10;:28;;44250:14;;;:::i;:::-;44236:28;:::i;:::-;;;:::i;:::-;;44228:60;:::i;:::-;44481:72;44489:43;:33;:24;:13;44503:9;44489:24;;:::i;:::-;:33;:::i;:::-;44523:8;44489:43;;:::i;:::-;44481:72;:::i;:::-;44639:33;44564:65;44594:35;:25;:14;44609:9;44594:25;;:::i;:::-;44620:8;44594:35;;:::i;:::-;44564:65;:::i;:::-;44639:12;44654:18;44639:5;:12;:33;:::i;:::-;44682:44;:34;:27;:16;44699:9;44682:27;;:::i;:::-;:34;:::i;:::-;44717:8;44682:44;;:::i;:::-;;44736:65;44778:23;44785:15;44778:23;:::i;:::-;44736:39;:29;:18;44755:9;44736:29;;:::i;:::-;44766:8;44736:39;;:::i;:::-;:65;:::i;:::-;44846:8;44856:6;;44817:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;44113:757::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33212:683::-;33742:146;33212:683;33786:92;33212:683;;33786:92;;33742:30;:25;33786:92;33212:683;33504:70;33512:18;:11;33786:92;33212:683;;;;33426:68;33434:10;:38;;33448:24;;:13;33462:9;33448:24;;:::i;:::-;;:::i;:::-;33434:38;:::i;:::-;;;:::i;:::-;;33426:68;:::i;:::-;33512:11;:::i;:::-;:18;;:::i;:::-;:44;;33534:22;;:::i;:::-;33512:44;:::i;:::-;;;:::i;:::-;;;33504:70;:::i;:::-;33584:47;33592:8;:20;;33604:8;33592:20;:::i;:::-;;;:::i;:::-;;;33584:47;:::i;:::-;33641:90;33649:32;:25;:14;33664:9;33649:25;;:::i;:::-;:32;:::i;:::-;:57;;33684:22;;:::i;:::-;33649:57;:::i;:::-;;;:::i;:::-;;33641:90;:::i;:::-;33742:14;:25;:::i;:::-;:30;:::i;:::-;33811:4;;33827:8;33847;33867;33786:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;33742:146;:::i;:::-;33212:683::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;28053:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;27976:884::-;28074:67;28104:37;:25;:14;28119:9;28104:25;;:::i;:::-;28130:10;28104:37;;:::i;:::-;28074:67;:::i;:::-;28175:5;:12;;:5;:12;;:::i;:::-;28201:9;;:31;;28214:18;28201:31;:::i;:::-;;;:::i;:::-;;28197:102;;28395:9;:31;;28408:18;28395:31;:::i;:::-;;;:::i;:::-;;:67;;;;27976:884;28391:104;;28639:21;28610:19;28595:34;28610:19;28595:12;:5;:12;:34;:::i;:::-;28639:17;:21;28659:1;28639:21;:::i;:::-;:5;:17;:21;:::i;:::-;28670:43;:31;:27;:16;28687:9;28670:27;;:::i;:::-;:31;:::i;:::-;28702:10;28670:43;;:::i;:::-;;28748:9;28759:10;28729:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;28810:10;;28822:9;28833:19;;28785:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27976:884::o;28391:104::-;28478:7;;;:::o;28395:67::-;28430:9;;:32;;28443:19;28430:32;:::i;:::-;;;:::i;:::-;;28395:67;;28197:102;28248:40;;:::i;:::-;6415:38701;;;28248:40;;;;;;;;:::i;:::-;;;;27976:884;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29569:585::-;29676:10;:24;;29690:10;29676:24;:::i;:::-;;;:::i;:::-;;:66;;;;29569:585;29668:93;;;:::i;:::-;29772:45;29780:8;:14;;29792:2;29780:14;:::i;:::-;;;:::i;:::-;;;29772:45;:::i;:::-;29847:50;29855:9;:14;;29868:1;29855:14;:::i;:::-;;;:::i;:::-;;;29847:50;:::i;:::-;29908:169;29978:8;29938:139;29999:9;29938:139;30025:41;;:27;:16;30042:9;30025:27;;:::i;:::-;:41;;:::i;:::-;29938:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;29908:27;:16;29925:9;29908:27;;:::i;:::-;:169;:::i;:::-;30127:8;30137:9;30093:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29569:585::o;29676:66::-;29704:10;29668:93;29704:10;:38;;29718:24;;:13;29732:9;29718:24;;:::i;:::-;;:::i;:::-;29704:38;:::i;:::-;;;:::i;:::-;;29676:66;;;;6415:38701;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;24826:1348::-;24910:65;24940:35;:25;:14;24955:9;24940:25;;:::i;:::-;24966:8;24940:35;;:::i;:::-;24910:65;:::i;:::-;25028:9;25017:21;25028:9;25017:21;:::i;:::-;25138:12;;:5;:12;;:::i;:::-;:34;;25154:18;25138:34;:::i;:::-;;;:::i;:::-;;25134:47;;25195:19;;:5;:19;;:::i;:::-;:24;;25218:1;25195:24;:::i;:::-;;;:::i;:::-;;25191:92;;25385:25;25311:37;:15;25329:19;;:5;:19;;:::i;:::-;25311:37;;:::i;:::-;25385:25;25395:15;;:6;:15;;:::i;:::-;25385:25;:::i;:::-;;;:::i;:::-;25511:16;:34;;25530:15;25511:34;:::i;:::-;;;:::i;:::-;;:78;;;;25548:15;;25511:78;25604:11;;:31;;25618:17;;:5;:17;;:::i;:::-;25604:31;:::i;:::-;;;:::i;:::-;;25600:568;;25511:78;24826:1348;;;;;:::o;25600:568::-;25651:31;25671:11;25651:17;:5;:17;:31;:::i;:::-;25696:26;;25721:1;25696:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;25741:31;;25756:16;;25741:11;25756:6;:16;;:::i;:::-;25741:31;:::i;:::-;;;:::i;:::-;;;:69;;;25600:568;25737:421;;25600:568;;;;25737:421;25883:33;25853:12;;:5;:12;;:::i;:::-;25898:18;25883:12;25898:18;25883:5;:12;:33;:::i;:::-;25934:44;:34;:27;:16;25951:9;25934:27;;:::i;:::-;:34;:::i;:::-;25969:8;25934:44;;:::i;:::-;;26022:9;26033:8;;26043:11;26002:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;26103:8;26113:9;26124:18;;26078:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;25737:421;;;;;;25741:69;25776:5;:12;;:5;:12;;:::i;:::-;:34;;25792:18;25776:34;:::i;:::-;;;:::i;:::-;;;25741:69;;25511:78;25566:23;25572:16;25566:23;:::i;:::-;25511:78;;25191:92;25235:7;;;;:::o;25134:47::-;25174:7;;;;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;38174:156::-;38298:25;38291:32;38174:156;38254:25;;:::i;:::-;38298:14;;:25;:::i;:::-;38291:32;:::i;:::-;;:::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;27342:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;27264:514::-;27363:67;27393:37;:25;:14;27408:9;27393:25;;:::i;:::-;27419:10;27393:37;;:::i;:::-;27363:67;:::i;:::-;27464:5;:12;;:5;:12;;:::i;:::-;27490:9;;:31;;27503:18;27490:31;:::i;:::-;;;:::i;:::-;;27486:103;;27599:33;27614:18;27599:12;27614:18;27599:5;:12;:33;:::i;:::-;27642:46;:34;:27;:16;27659:9;27642:27;;:::i;:::-;:34;:::i;:::-;27677:10;27642:46;;:::i;:::-;;27729:10;;27741:9;27752:18;;27704:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27264:514::o;27486:103::-;27537:41;;:::i;:::-;6415:38701;;;27537:41;;;;;;;;:::i;:::-;;;;27264:514;;;;:::i;:::-;:::o;6415:38701::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;37851:264::-;;38063:33;:45;37851:264;;38063:23;:45;37851:264;38033:7;;:::i;:::-;38063:12;;:23;:::i;:::-;:33;:::i;:::-;38097:10;;38063:45;;:::i;:::-;;:::i;:::-;38056:52;:::o;1232:99:3:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:38701:183:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;42932:886;;43767:34;:27;:44;42932:886;43027:10;:38;;43041:24;;:13;43055:9;43041:24;;:::i;:::-;;:::i;:::-;43027:38;:::i;:::-;;;:::i;:::-;;:63;;;;42932:886;43019:90;;;:::i;:::-;43120:64;43149:35;:25;:14;43164:9;43149:25;;:::i;:::-;43175:8;43149:35;;:::i;:::-;43120:64;:::i;:::-;43294:12;;:5;:12;;:::i;:::-;:34;;43310:18;43294:34;:::i;:::-;;;:::i;:::-;;43290:416;;42932:886;43716:13;:41;:31;:24;:13;43730:9;43716:24;;:::i;:::-;:31;:::i;:::-;43748:8;43716:41;;:::i;:::-;;43767:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;42932:886::o;43290:416::-;43514:181;43387:9;43443:57;:52;43376:21;43387:9;43376:21;:::i;:::-;43470:25;43478:16;;43443:24;43451:15;;:6;:15;;:::i;:::-;43443:24;:::i;:::-;43478:6;:16;;:::i;:::-;43470:25;:::i;:::-;43443:52;;:::i;:::-;:57;43498:2;43443:57;:::i;:::-;;;:::i;:::-;43539:19;;:5;:19;;:::i;:::-;:23;;43561:1;43539:23;:::i;:::-;;;:::i;:::-;;:89;;;;43290:416;43514:181;;;:::i;:::-;43290:416;;;43539:89;43566:62;:15;;;:37;:62;:15;43584:19;;43566:15;43584:5;:19;;:::i;:::-;43566:37;;:::i;:::-;43607:21;43566:62;:::i;:::-;;;:::i;:::-;;;43539:89;;;;43027:63;43069:10;43019:90;43069:10;:21;;43083:7;;:::i;:::-;43069:21;:::i;:::-;;;:::i;:::-;;43027:63;;;;38403:374;;38607:35;38578:64;38403:374;38499:4;;:::i;:::-;38558:9;38607:25;38547:21;38558:9;38547:21;:::i;:::-;38607:14;;:25;:::i;:::-;:35;:::i;:::-;38578:64;:::i;:::-;38657:19;;:5;:19;;:::i;:::-;:24;;38680:1;38657:24;:::i;:::-;;;:::i;:::-;;38653:42;;38713:57;38755:15;;38714:37;38713:57;38714:15;38732:19;38714:15;;38732:5;:19;;:::i;:::-;38714:37;;:::i;:::-;38755:6;:15;;:::i;:::-;38713:57;:::i;:::-;;;:::i;:::-;;38706:64;:::o;38653:42::-;38690:5;;;38683:12;:::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:3:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;32669:225:183:-;32836:41;:27;:51;32669:225;32758:68;32766:10;:38;;32780:24;;:13;32794:9;32780:24;;:::i;:::-;;:::i;:::-;32766:38;:::i;:::-;;;:::i;:::-;;32758:68;:::i;:::-;32836:16;;:27;:::i;:::-;:41;:51;:::i;:::-;32669:225::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;32015:347;32107:53;32115:10;:24;;32129:10;32115:24;:::i;:::-;;;:::i;:::-;;32107:53;:::i;:::-;32170:75;32178:48;:38;:31;:20;32199:9;32178:31;;:::i;:::-;:38;:::i;:::-;32217:8;32178:48;;:::i;:::-;32170:75;:::i;:::-;32255:44;:34;:27;:16;32272:9;32255:27;;:::i;:::-;:34;:::i;:::-;32290:8;32255:44;;:::i;:::-;;32346:8;32314:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32015:347::o;6415:38701::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38824:443::-;38951:27;38919:59;38824:443;38885:22;;:::i;:::-;38951:16;;:27;:::i;:::-;38919:59;:::i;:::-;39037:15;;:6;:15;;:::i;:::-;:20;;39056:1;39037:20;:::i;:::-;;;:::i;:::-;;39033:95;;38824:443;39141:16;;:6;:16;;:::i;:::-;:21;;39161:1;39141:21;:::i;:::-;;;:::i;:::-;;39137:100;;38824:443;39247:13;:::o;39137:100::-;39178:48;39197:29;;:::i;:::-;39178:16;:6;:16;:48;:::i;:::-;39137:100;;39033:95;39073:44;39091:26;;:::i;:::-;39073:15;:6;:15;:44;:::i;:::-;39033:95;;6415:38701;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:46:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:2:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:3;;;;;;1901:40:2;;;;;;:::i;:::-;;;;8844:165:46;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:36:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:38701:183:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;16445:2218::-;;;;;;16647:65;16677:35;:25;:14;16692:9;16677:25;;:::i;:::-;16703:8;16677:35;;:::i;:::-;16647:65;:::i;:::-;16765:9;16754:21;16765:9;16754:21;:::i;:::-;16852:5;16844:66;16852:12;;:5;:12;;:::i;:::-;:34;;16868:18;16852:34;:::i;:::-;;;:::i;:::-;;;16844:66;:::i;:::-;16972:38;:28;:24;:13;16986:9;16972:24;;:::i;:::-;:28;:::i;:::-;17001:8;16972:38;;:::i;:::-;;18062:20;;17068:12;;:5;:12;;:::i;:::-;17112:15;17090:37;17112:15;17090:19;:5;:19;:37;:::i;:::-;17137:42;17161:18;17171:7;;17161:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17137:21;:5;:21;:42;:::i;:::-;17189:21;;17209:1;17189:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;17220:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;17310:20;;:::i;:::-;17344:10;;:15;;17358:1;17344:15;:::i;:::-;;;:::i;:::-;;17340:393;;;;17743:24;17387:18;17340:393;;17743:12;17758:9;17743:5;:12;:24;:::i;:::-;17811:9;:31;;17824:18;17811:31;:::i;:::-;;;:::i;:::-;;:66;;;17340:393;17807:196;;17340:393;18062:20;;:::i;:::-;:42;;;17340:393;18058:118;;17340:393;18209:9;;;18220:11;18233:8;18243:10;18255:15;;18191:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18286:9;:22;;18299:9;18286:22;:::i;:::-;;;:::i;:::-;;18282:114;;17340:393;18473:15;;;;;:::i;:::-;:29;;18492:10;18500:1;18492:10;:::i;:::-;18473:29;:::i;:::-;;;:::i;:::-;;18469:188;;17340:393;16445:2218;;:::o;18469:188::-;18522:49;:33;18539:15;;;:::i;:::-;18522:33;:::i;:::-;:49;:::i;:::-;;;18572:8;18582:9;18600:15;18593:23;18600:15;18593:23;:::i;:::-;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;18469:188;18518:129;;;;;;;;;;;18469:188;;;;18518:129;;;;;;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18282:114::-;18343:9;18354:8;18364:9;18375;18329:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18282:114;;;;18058:118;18157:7;18136:9;;18147:8;;18157:7;;;;:::i;:::-;18058:118;;;;18062:42;18086:7;:14;:7;;:14;;:::i;:::-;:18;;18103:1;18086:18;:::i;:::-;;;:::i;:::-;;18062:42;;17807:196;17893:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;17925:8;17893:41;;:::i;:::-;;17972:9;17983:8;17953:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;17807:196;;17811:66;17846:9;;:31;;17859:18;17846:31;:::i;:::-;;;:::i;:::-;;;17811:66;;17340:393;17426:10;:16;;17439:3;17426:16;:::i;:::-;;;:::i;:::-;;17422:311;;;;17743:24;17470:19;17422:311;;17340:393;;17422:311;17743:24;17611:19;17668:9;17714:7;17668:9;17679:11;;17692:8;17702:10;17714:7;;;;;;:::i;:::-;17422:311;;9090:115:46;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:38701:183:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:46:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:38701:183:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:30:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:38701:183:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;41446:705::-;;;;;41633:26;;:::i;:::-;41713:3;41699:27;41713:12;:3;41719:6;41713:12;;:::i;:::-;41699:27;:::i;:::-;41752:1;41736:17;41752:1;41736:17;:::i;:::-;41781:6;41798:3;41789:1;:7;;41793:3;41789:7;:::i;:::-;;;:::i;:::-;;;;;41830:30;:27;:24;:13;41844:9;41830:24;;:::i;:::-;:27;:::i;:::-;41858:1;41830:30;;:::i;:::-;41878:46;41899:9;41910:2;41914:9;41878:46;;:::i;:::-;41874:126;;41798:3;;;;;:::i;:::-;41769:18;;41874:126;41798:3;41958:2;;41944:16;41978:7;41958:2;41944:16;:4;41949:5;;41944:16;;;:::i;:::-;;:::i;:::-;41978:7;:::i;:::-;41874:126;;;;41789:7;;;;;;;42032:20;42046:5;42032:20;:::i;:::-;42079:1;42067:13;42079:1;42067:13;:::i;:::-;42093:3;42082:1;:9;;42086:5;42082:9;:::i;:::-;;;:::i;:::-;;;;;42093:3;42127:4;42112:22;42127:7;;:4;42132:1;42127:7;;:::i;:::-;;:::i;:::-;42112:22;:9;42122:1;;42112:22;;;:::i;:::-;;:::i;:::-;42093:3;:::i;:::-;42067:13;;42082:9;;;;;41446:705::o;8607:156:46:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:38701:183:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:46:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:38701:183:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:36:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:38701:183:-;;-1:-1:-1;6415:38701:183;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:36:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:183;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;23148:1016::-;;;;;;23584:17;;23598:3;23584:17;:::i;:::-;;;:::i;:::-;;;23580:513;;23148:1016;;;:::o;23580:513::-;23638:23;23645:15;23638:23;:::i;:::-;23694:39;;:29;:18;23713:9;23694:29;;:::i;:::-;23724:8;23694:39;;:::i;:::-;;:::i;:::-;23751:9;:14;;23764:1;23751:14;:::i;:::-;;;:::i;:::-;;:65;;;;;23580:513;23747:336;;;23580:513;;;;23747:336;23836:53;23878:11;23836:39;:29;:18;23855:9;23836:29;;:::i;:::-;23866:8;23836:39;;:::i;:::-;:53;:::i;:::-;23941:8;23912:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;23747:336;;;;;23751:65;23769:23;:11;;;:23;:::i;:::-;:47;;23796:20;;:::i;:::-;23769:47;:::i;:::-;;;:::i;:::-;;;23751:65;;;6415:38701;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;18801:46::-;18845:2;;;:::i;:::-;18801:46;:::o;18845:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;18854:1122::-;;18962:14;:7;;:14;;:::i;:::-;:19;;18980:1;18962:19;:::i;:::-;;;:::i;:::-;;18958:32;;19067:14;:7;;:14;;:::i;:::-;:23;;19084:6;19067:23;:::i;:::-;;;:::i;:::-;;19063:36;;19240:31;19109:25;;:::i;:::-;19240:4;:22;:4;:22;:::i;:::-;:31;:22;19263:7;;19240:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;18854:1122;19236:152;;;;;;;;;;;19472:12;:5;:12;:::i;:::-;:31;;19487:16;;:::i;:::-;19472:31;:::i;:::-;;;:::i;:::-;;:65;;;;19506:16;;:::i;:::-;19472:65;19709:28;:4;:28;:::i;:::-;;;19738:9;19749:8;19759:5;19766:8;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19472:65;19705:265;;;;;;;;;;;18854:1122::o;19705:265::-;;;;;;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19472:65::-;19525:12;:5;:12;:::i;:::-;19472:65;;19236:152;19371:7;;;:::o;19236:152::-;;;;;;;19240:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;19063:36;19092:7;;;;:::o;18958:32::-;18983:7;;;;:::o;4474:107:46:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:38701:183:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:46:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;42157:511:183:-;42265:4;;:::i;:::-;42364:20;42363:51;42364:50;:40;:31;:20;42385:9;42364:31;;:::i;:::-;:40;:::i;:::-;42405:8;42364:50;;:::i;:::-;42363:51;;:::i;:::-;42359:69;;42439:64;42468:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;42439:64;:::i;:::-;42517:19;;:5;:19;;:::i;:::-;:24;;42540:1;42517:24;:::i;:::-;;;:::i;:::-;;:62;;;;42157:511;42513:80;;42611:50;:37;:50;:15;42629:19;;42611:15;42629:5;:19;;:::i;:::-;42611:37;;:::i;:::-;42652:9;42611:50;:::i;:::-;;;:::i;:::-;;;42604:57;:::o;42513:80::-;42588:5;;;42581:12;:::o;42517:62::-;42545:5;:12;;:5;:12;;:::i;:::-;:34;;42561:18;42545:34;:::i;:::-;;;:::i;:::-;;42517:62;;42359:69;42423:5;;;;42416:12;:::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:46:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:38701:183:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:36:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"103240":[{"start":3807,"length":32},{"start":14646,"length":32}],"103388":[{"start":5216,"length":32},{"start":9933,"length":32},{"start":13367,"length":32},{"start":22350,"length":32},{"start":25355,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec\",\"dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319","urls":["bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec","dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x"],"license":"MIT"}},"version":1},"id":183} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617b106104d38239608051818181610edf0152613936015260a051818181611460015281816126cd015281816134370152818161574e015261630b0152617b1090f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617fe38038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:183:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;13060:465::-;;;;;:::i;:::-;13147:24;;13252:95;13224:284;13365:35;13418:14;13224:284;13418:14;13450:13;13481;13489:4;13481:13;:::i;:::-;13224:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13201:317;;;;:::i;:::-;;;:::i;:::-;;13182:336;;13060:465::o;984:1491:3:-;;;;:::i;:::-;:::o;6415:38701:183:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:2:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:183;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:38701:183:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:183:-:0;;;;;;;;;-1:-1:-1;6415:38701:183;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;11660:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:38701;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7851:61::-;7903:9;;;:::i;:::-;7851:61;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;12224:30::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14180:52::-;14223:9;;;:::i;:::-;14180:52;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8133:41::-;;;:::o;6415:38701::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;12352:53::-;12398:7;;;:::i;:::-;12352:53;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10898:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:183;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;39843:43::-;39883:3;;;:::i;:::-;39843:43;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;11530:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;12045:35::-;;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32979:51::-;33028:2;;;:::i;:::-;32979:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7980:55::-;8034:1;;;:::i;:::-;7980:55;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;33154:51::-;33203:2;;;:::i;:::-;33154:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;11816:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;12131:29::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10758:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8447:189::-;8492:144;8447:189;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30254:263::-;30478:24;:32;30254:263;30336:53;30344:10;:24;;30358:10;30344:24;:::i;:::-;;;:::i;:::-;;30336:53;:::i;:::-;30399:69;30407:24;;:13;30421:9;30407:24;;:::i;:::-;;:::i;:::-;:38;;30435:10;30443:1;30435:10;:::i;:::-;30407:38;:::i;:::-;;;:::i;:::-;;30399:69;:::i;:::-;30478:13;;:24;:::i;:::-;:32;:::i;:::-;30254:263::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;37647:147::-;37766:21;37647:147;37725:22;;:::i;:::-;37777:9;37766:21;:::i;:::-;37759:28;:::o;6415:38701::-;;;:::o;36547:176::-;36667:35;:49;36547:176;36667:25;:49;36547:176;36641:7;;:::i;:::-;36667:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;36660:56;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:183;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33980:640::-;;;;;34097:68;34105:10;:38;;34119:24;;:13;34133:9;34119:24;;:::i;:::-;;:::i;:::-;34105:38;:::i;:::-;;;:::i;:::-;;34097:68;:::i;:::-;34175:77;34183:18;:11;;:18;;:::i;:::-;:44;;34205:22;;:::i;:::-;34183:44;:::i;:::-;;;:::i;:::-;;;34175:77;:::i;:::-;34262:32;;34269:25;:14;34284:9;34269:25;;:::i;:::-;34262:32;:::i;:::-;34309:13;34321:1;34309:13;:::i;:::-;34348:3;34324:1;:22;;34328:18;:11;;:18;;:::i;:::-;34324:22;:::i;:::-;;;:::i;:::-;;;;;34348:3;34381:11;34367:85;34375:33;:26;34381:19;:14;:11;;34393:1;34381:14;;:::i;:::-;:19;;;;;:::i;:::-;34375:26;;:::i;:::-;:33;;:::i;:::-;:59;;34412:22;;:::i;:::-;34375:59;:::i;:::-;;;:::i;:::-;;;34367:85;:::i;:::-;34466:77;34474:23;;:14;:11;;34486:1;34474:14;;:::i;:::-;:23;;:::i;:::-;:50;;34501:23;;:14;:11;;34513:1;34501:14;;:::i;:::-;:23;;:::i;:::-;34474:50;:::i;:::-;;;:::i;:::-;;;34466:77;:::i;:::-;34557:46;:30;:25;:14;34572:9;34557:25;;:::i;:::-;:30;:::i;:::-;34588:14;:11;;34600:1;34588:14;;:::i;:::-;34557:46;;:::i;:::-;34348:3;:::i;:::-;34309:13;;34324:22;;;;;;33980:640::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30760:1036::-;30850:53;30858:10;:24;;30872:10;30858:24;:::i;:::-;;;:::i;:::-;;30850:53;:::i;:::-;30913:47;30921:8;:22;;30933:10;30941:1;30933:10;:::i;:::-;30921:22;:::i;:::-;;;:::i;:::-;;;30913:47;:::i;:::-;30970:76;30978:45;:35;:31;:20;30999:9;30978:31;;:::i;:::-;:35;:::i;:::-;31014:8;30978:45;;:::i;:::-;30970:76;:::i;:::-;31439:42;;31446:35;:25;:14;31461:9;31446:25;;:::i;:::-;31472:8;31446:35;;:::i;:::-;31439:42;:::i;:::-;31672:63;31717:18;31672:42;:35;:25;:14;31687:9;31672:25;;:::i;:::-;31698:8;31672:35;;:::i;:::-;:42;:63;:::i;:::-;31780:8;31750:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30760:1036::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34923:188:183:-;35078:26;34923:188;35078:26;;:::i;:::-;34923:188::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;7140:166;;7298:1;7140:166;;;;;;;7200:88;7208:52;:40;:31;15071:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;15100:9;:27;;15112:15;15100:27;:::i;:::-;;;:::i;:::-;;15096:95;;15205:27;:15;:27;15223:9;15205:27;:::i;:::-;;;:::i;:::-;:47;;15235:17;;:::i;:::-;15205:47;:::i;:::-;;;:::i;:::-;;15201:135;;15921:7;15418:18;;15759:25;15794:50;15418:18;;15390:235;15418:18;15390:235;15418:18;15759:25;15418:18;;;15566;15418;;:::i;:::-;15454:10;;15482:9;15509:11;15538:10;15576:7;15566:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;15602:9;15390:235;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15367:268;;;;:::i;:::-;;;:::i;:::-;;15672:58;15701:16;15672:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15662:69;;;;:::i;:::-;;;:::i;:::-;;15774:9;15759:25;:::i;:::-;;;:::i;:::-;15802:20;;15812:10;15802:20;:::i;:::-;;;:::i;:::-;;15794:50;:::i;:::-;15884:11;15897:10;15909;15921:7;;;;:::i;:::-;14803:1133::o;15201:135::-;15301:23;15308:15;15301:23;:::i;:::-;15275:50;;;;;;;;;;;;;;;:::i;:::-;;;;15096:95;15167:23;15174:15;15167:23;:::i;:::-;15136:55;;;;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;35274:160::-;;35392:35;35274:160;35348:25;;:::i;:::-;35403:7;;35392:35;;;;:::i;:::-;35385:42;:::o;43895:136::-;43991:31;:24;:33;43895:136;43965:7;;:::i;:::-;43991:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;43984:40;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;37041:359::-;;37119:16;;:::i;:::-;37163;:36;:34;:27;:16;37180:9;37163:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37249:5;37235:20;37249:5;37235:20;:::i;:::-;37282:1;37270:13;37282:1;37270:13;:::i;:::-;37296:3;37285:1;:9;;37289:5;37285:9;:::i;:::-;;;:::i;:::-;;;;;37296:3;37327:16;37315:45;37327:33;:30;:27;:16;37344:9;37327:27;;:::i;:::-;:30;:::i;:::-;37358:1;37327:33;;:::i;:::-;37315:45;:6;37322:1;;37315:45;;;:::i;:::-;;:::i;:::-;37296:3;:::i;:::-;37270:13;;37285:9;;;;;37380:13;:::o;6415:38701::-;;;:::o;35990:261::-;;36076:4;;:::i;:::-;36099:14;:42;;:35;:25;:14;36114:9;36099:25;;:::i;:::-;36125:8;36099:35;;:::i;:::-;:42;;:::i;:::-;:64;;36145:18;36099:64;:::i;:::-;;;:::i;:::-;;:145;;;;;35990:261;36092:152;;;:::o;36099:145::-;36179:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;36225:19;36179:65;:::i;:::-;;;:::i;:::-;;36099:145;;;;40097:200;40231:59;40097:200;40178:26;;:::i;:::-;40262:9;40273:1;40276:13;40231:59;40276:13;;:::i;:::-;40231:59;;:::i;:::-;;;:::i;:::-;40216:74;40097:200;:::o;7140:166::-;;7298:1;7140:166;;;;7200:88;7208:52;:40;:31;16286:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;16072:320::-;;16377:7;16072:320;;;;16353:10;16365;16377:7;;;;:::i;:::-;16072:320::o;:::-;;;;;;;;:::i;:::-;:::o;32433:178::-;;32554:40;:31;:50;32433:178;32531:4;;:::i;:::-;32554:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;32547:57;:::o;6415:38701::-;;;:::o;36307:173::-;36431:35;:42;36307:173;36431:25;:42;36307:173;36402:10;;:::i;:::-;36431:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;36424:49;:::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;20231:2843::-;;;;;20414:53;20422:10;:27;;20436:13;20444:4;20436:13;:::i;:::-;20422:27;:::i;:::-;;;:::i;:::-;;20414:53;:::i;:::-;20478:66;20519:25;:14;20534:9;20519:25;;:::i;:::-;20478:66;:::i;:::-;20651:8;20637:23;20651:8;20637:23;:::i;:::-;20687:1;20675:13;20687:1;20675:13;:::i;:::-;20704:3;20690:1;:12;;20694:8;20690:12;:::i;:::-;;;:::i;:::-;;;;;20704:3;20755:5;20723:47;20749:20;20755:13;:8;:5;20761:1;20755:8;;:::i;:::-;;:13;;20749:20;:::i;:::-;20739:31;;;;:::i;:::-;;;:::i;:::-;;20723:47;:10;20734:1;;20723:47;;;:::i;:::-;;:::i;:::-;20704:3;:::i;:::-;20675:13;;20690:12;;;;;;;20813:18;:11;:18;:::i;:::-;:22;;20834:1;20813:22;:::i;:::-;;;:::i;:::-;;20914:26;;;:::i;:::-;20954:14;;20950:237;;20670:111;21267:13;21279:1;21267:13;:::i;:::-;21296:3;21282:1;:12;;21286:8;21282:12;:::i;:::-;;;:::i;:::-;;;;;21328:4;21371:5;21449:14;21445:737;;21296:3;22244:5;;;;;21296:3;22244:5;22240:198;;21296:3;;;;;:::i;:::-;21267:13;;22240:198;22320:5;22303:13;:8;22269:33;:48;22320:5;22269:23;22320:14;;:8;22269:65;22320:5;22326:1;22320:8;;:::i;:::-;;:14;;:::i;:::-;22269:12;;:23;:::i;:::-;:33;:::i;:::-;22303:5;22309:1;22303:8;;:::i;:::-;;:13;;22269:48;;:::i;:::-;:65;:::i;:::-;22372:9;;22383:8;22393:5;22408:14;;:8;22393:13;:8;:5;22399:1;22393:8;;:::i;:::-;;:13;;22408:5;22414:1;22408:8;;:::i;:::-;;:14;;:::i;:::-;22357:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;22240:198;;;;;21445:737;21500:1;;;;;;21488:13;21500:1;21488:13;:::i;:::-;21527:3;21503:1;:22;;21507:18;:11;:18;:::i;:::-;21503:22;:::i;:::-;;;:::i;:::-;;;;;21558:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;21575:12;;:9;21585:1;21575:12;;:::i;:::-;;:::i;:::-;21558:29;:::i;:::-;;;:::i;:::-;;21554:433;;21527:3;;;:::i;:::-;21488:13;;21554:433;21635:4;;;;;;;21296:3;21635:4;;;;;;21669:5;;:14;;:8;:5;21675:1;21669:8;;:::i;:::-;;:14;;:::i;:::-;:40;;21686:23;;:14;:11;21698:1;21686:14;;:::i;:::-;;:23;;:::i;:::-;21669:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;21554:433;21665:269;;;;;;21554:433;22094:18;21959:5;21483:522;22094:18;;:::i;:::-;22090:78;;21483:522;21445:737;;;;;;;22090:78;22144:5;;22090:78;;21665:269;21806:9;;;21817:8;21827:13;:8;:5;21833:1;21827:8;;:::i;:::-;;:13;;21790:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22094:18;21902:5;21665:269;;;;;21669:84;21713:40;:5;;;21730:14;21713:40;:5;:14;;:8;21730:23;21713:5;21730:23;21713:5;:8;:::i;:::-;;:14;;:::i;:::-;21730:11;:14;:::i;:::-;;:23;;:::i;:::-;21713:40;:::i;:::-;;;:::i;:::-;;21669:84;;;;;;21503:22;;;;;;;21296:3;21503:22;;;22094:18;21503:22;;;;21282:12;;;;;;;;;;22509:13;22521:1;22509:13;:::i;:::-;22504:564;22548:3;22524:1;:22;;22528:18;:11;:18;:::i;:::-;22524:22;:::i;:::-;;;:::i;:::-;;;;;22571:24;22572:23;;:14;:11;22584:1;22572:14;;:::i;:::-;;:23;;:::i;:::-;22571:24;;:::i;:::-;22567:38;;22638:37;22648:26;22654:19;:14;:11;22666:1;22654:14;;:::i;:::-;;:19;22648:26;:::i;:::-;22638:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;22702:5;;22738:1;22726:13;22738:1;22726:13;:::i;:::-;22764:3;22741:1;:21;;22745:17;:10;:17;:::i;:::-;22741:21;:::i;:::-;;;:::i;:::-;;;;;22791:13;;:10;22802:1;22791:13;;:::i;:::-;;:::i;:::-;:24;;22808:7;22791:24;:::i;:::-;;;:::i;:::-;;22787:110;;22764:3;;;:::i;:::-;22726:13;;22787:110;22847:4;;;;;22548:3;22847:4;;22928:6;22847:4;22721:190;22928:6;;:::i;:::-;22924:134;;22721:190;22509:13;22548:3;:::i;:::-;22509:13;;;;22924:134;22975:9;22986:8;22996:19;:14;:11;23008:1;22996:14;;:::i;:::-;;:19;22959:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22924:134;;22741:21;;;;;22548:3;22741:21;;22928:6;22741:21;;;22567:38;22597:8;;22548:3;22597:8;;;22524:22;;;;;;20231:2843::o;20950:237::-;21010:11;;;;20996:33;21010:18;:11;;;;;;:18;:::i;:::-;20996:33;:::i;:::-;21060:1;21048:13;21060:1;21048:13;:::i;:::-;21087:3;21063:1;:22;;21067:18;:11;:18;:::i;:::-;21063:22;:::i;:::-;;;:::i;:::-;;;;;21087:3;21141:11;21110:52;21125:37;21135:26;21141:19;:14;:11;21153:1;21141:14;;:::i;:::-;;:19;21135:26;:::i;:::-;21125:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;21110:52;:9;21120:1;;21110:52;;;:::i;:::-;;:::i;:::-;21087:3;:::i;:::-;21048:13;;21063:22;;;;;;;;;;20950:237;;1500:62:2;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:38701:183:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;36769:211::-;36931:42;36769:211;36938:25;:35;36769:211;36895:20;;:::i;:::-;36938:14;;:25;:::i;:::-;:35;:::i;:::-;36931:42;:::i;:::-;;:::o;6415:38701::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;44950:164::-;45068:39;44950:164;45068:29;:39;44950:164;45043:6;;:::i;:::-;45068:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;45061:46;:::o;2244:229:3:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;37448:142:183;37547:34;:27;:36;37448:142;37521:7;;:::i;:::-;37547:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37540:43;:::o;6415:38701::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;40660:780::-;;;;;40824:26;;:::i;:::-;40852:13;;;:::i;:::-;40924:9;40913:21;40924:9;40913:21;:::i;:::-;40952:13;:33;:31;:24;:13;40966:9;40952:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;41000:6;:16;;:6;:16;;:::i;:::-;:21;;41020:1;41000:21;:::i;:::-;;;:::i;:::-;;:35;;;;40660:780;41000:54;;;;40660:780;40996:117;;41143:52;41151:6;41170:25;41178:16;;41143:24;41151:15;;41372:61;41151:6;;;:15;;:::i;:::-;41143:24;:::i;:::-;41178:6;:16;;:::i;:::-;41170:25;:::i;:::-;41143:52;;:::i;:::-;41225:5;;:21;;41233:13;;:::i;:::-;41225:21;:::i;:::-;;;:::i;:::-;;:45;;;;41249:13;;;:::i;:::-;41225:45;41294:18;:6;41303:9;41294:18;;:::i;:::-;:26;;41315:5;41294:26;:::i;:::-;;;:::i;:::-;;:55;;;;41323:5;;41294:55;41399:9;41410:6;41418:3;41423:9;41372:61;;:::i;:::-;40660:780;:::o;41294:55::-;41331:18;:6;;:18;:::i;:::-;41294:55;;41225:45;;;40996:117;41092:1;;;;;41078:16;;41092:1;41078:16;:::i;:::-;;:::i;:::-;41070:32;;:::o;41000:54::-;41039:6;;:15;;41049:5;41039:15;:::i;:::-;;;:::i;:::-;;;41000:54;;:35;41025:5;;:10;;41034:1;41025:10;:::i;:::-;;;:::i;:::-;;41000:35;;1500:62:2;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34670:182:183:-;34822:23;34670:182;34822:23;;:::i;:::-;34670:182::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;1638:85:2:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:38701:183:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;26227:224;;;;;26329:13;26341:1;26329:13;:::i;:::-;26366:3;26344:1;:20;;26348:16;:9;;:16;;:::i;:::-;26344:20;:::i;:::-;;;:::i;:::-;;;;;26385:24;:4;:24;:::i;:::-;;;26410:9;26421:12;;:9;;26431:1;26421:12;;:::i;:::-;;:::i;:::-;26385:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26366:3;26385:49;;;26366:3;;;:::i;:::-;26329:13;;26385:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;26344:20::-;;;;;;26227:224::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;44113:757::-;44228:60;44236:10;:28;;44250:14;;;:::i;:::-;44236:28;:::i;:::-;;;:::i;:::-;;44228:60;:::i;:::-;44481:72;44489:43;:33;:24;:13;44503:9;44489:24;;:::i;:::-;:33;:::i;:::-;44523:8;44489:43;;:::i;:::-;44481:72;:::i;:::-;44639:33;44564:65;44594:35;:25;:14;44609:9;44594:25;;:::i;:::-;44620:8;44594:35;;:::i;:::-;44564:65;:::i;:::-;44639:12;44654:18;44639:5;:12;:33;:::i;:::-;44682:44;:34;:27;:16;44699:9;44682:27;;:::i;:::-;:34;:::i;:::-;44717:8;44682:44;;:::i;:::-;;44736:65;44778:23;44785:15;44778:23;:::i;:::-;44736:39;:29;:18;44755:9;44736:29;;:::i;:::-;44766:8;44736:39;;:::i;:::-;:65;:::i;:::-;44846:8;44856:6;;44817:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;44113:757::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33212:683::-;33742:146;33212:683;33786:92;33212:683;;33786:92;;33742:30;:25;33786:92;33212:683;33504:70;33512:18;:11;33786:92;33212:683;;;;33426:68;33434:10;:38;;33448:24;;:13;33462:9;33448:24;;:::i;:::-;;:::i;:::-;33434:38;:::i;:::-;;;:::i;:::-;;33426:68;:::i;:::-;33512:11;:::i;:::-;:18;;:::i;:::-;:44;;33534:22;;:::i;:::-;33512:44;:::i;:::-;;;:::i;:::-;;;33504:70;:::i;:::-;33584:47;33592:8;:20;;33604:8;33592:20;:::i;:::-;;;:::i;:::-;;;33584:47;:::i;:::-;33641:90;33649:32;:25;:14;33664:9;33649:25;;:::i;:::-;:32;:::i;:::-;:57;;33684:22;;:::i;:::-;33649:57;:::i;:::-;;;:::i;:::-;;33641:90;:::i;:::-;33742:14;:25;:::i;:::-;:30;:::i;:::-;33811:4;;33827:8;33847;33867;33786:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;33742:146;:::i;:::-;33212:683::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;28053:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;27976:884::-;28074:67;28104:37;:25;:14;28119:9;28104:25;;:::i;:::-;28130:10;28104:37;;:::i;:::-;28074:67;:::i;:::-;28175:5;:12;;:5;:12;;:::i;:::-;28201:9;;:31;;28214:18;28201:31;:::i;:::-;;;:::i;:::-;;28197:102;;28395:9;:31;;28408:18;28395:31;:::i;:::-;;;:::i;:::-;;:67;;;;27976:884;28391:104;;28639:21;28610:19;28595:34;28610:19;28595:12;:5;:12;:34;:::i;:::-;28639:17;:21;28659:1;28639:21;:::i;:::-;:5;:17;:21;:::i;:::-;28670:43;:31;:27;:16;28687:9;28670:27;;:::i;:::-;:31;:::i;:::-;28702:10;28670:43;;:::i;:::-;;28748:9;28759:10;28729:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;28810:10;;28822:9;28833:19;;28785:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27976:884::o;28391:104::-;28478:7;;;:::o;28395:67::-;28430:9;;:32;;28443:19;28430:32;:::i;:::-;;;:::i;:::-;;28395:67;;28197:102;28248:40;;:::i;:::-;6415:38701;;;28248:40;;;;;;;;:::i;:::-;;;;27976:884;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29569:585::-;29676:10;:24;;29690:10;29676:24;:::i;:::-;;;:::i;:::-;;:66;;;;29569:585;29668:93;;;:::i;:::-;29772:45;29780:8;:14;;29792:2;29780:14;:::i;:::-;;;:::i;:::-;;;29772:45;:::i;:::-;29847:50;29855:9;:14;;29868:1;29855:14;:::i;:::-;;;:::i;:::-;;;29847:50;:::i;:::-;29908:169;29978:8;29938:139;29999:9;29938:139;30025:41;;:27;:16;30042:9;30025:27;;:::i;:::-;:41;;:::i;:::-;29938:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;29908:27;:16;29925:9;29908:27;;:::i;:::-;:169;:::i;:::-;30127:8;30137:9;30093:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29569:585::o;29676:66::-;29704:10;29668:93;29704:10;:38;;29718:24;;:13;29732:9;29718:24;;:::i;:::-;;:::i;:::-;29704:38;:::i;:::-;;;:::i;:::-;;29676:66;;;;6415:38701;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;24826:1348::-;24910:65;24940:35;:25;:14;24955:9;24940:25;;:::i;:::-;24966:8;24940:35;;:::i;:::-;24910:65;:::i;:::-;25028:9;25017:21;25028:9;25017:21;:::i;:::-;25138:12;;:5;:12;;:::i;:::-;:34;;25154:18;25138:34;:::i;:::-;;;:::i;:::-;;25134:47;;25195:19;;:5;:19;;:::i;:::-;:24;;25218:1;25195:24;:::i;:::-;;;:::i;:::-;;25191:92;;25385:25;25311:37;:15;25329:19;;:5;:19;;:::i;:::-;25311:37;;:::i;:::-;25385:25;25395:15;;:6;:15;;:::i;:::-;25385:25;:::i;:::-;;;:::i;:::-;25511:16;:34;;25530:15;25511:34;:::i;:::-;;;:::i;:::-;;:78;;;;25548:15;;25511:78;25604:11;;:31;;25618:17;;:5;:17;;:::i;:::-;25604:31;:::i;:::-;;;:::i;:::-;;25600:568;;25511:78;24826:1348;;;;;:::o;25600:568::-;25651:31;25671:11;25651:17;:5;:17;:31;:::i;:::-;25696:26;;25721:1;25696:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;25741:31;;25756:16;;25741:11;25756:6;:16;;:::i;:::-;25741:31;:::i;:::-;;;:::i;:::-;;;:69;;;25600:568;25737:421;;25600:568;;;;25737:421;25883:33;25853:12;;:5;:12;;:::i;:::-;25898:18;25883:12;25898:18;25883:5;:12;:33;:::i;:::-;25934:44;:34;:27;:16;25951:9;25934:27;;:::i;:::-;:34;:::i;:::-;25969:8;25934:44;;:::i;:::-;;26022:9;26033:8;;26043:11;26002:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;26103:8;26113:9;26124:18;;26078:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;25737:421;;;;;;25741:69;25776:5;:12;;:5;:12;;:::i;:::-;:34;;25792:18;25776:34;:::i;:::-;;;:::i;:::-;;;25741:69;;25511:78;25566:23;25572:16;25566:23;:::i;:::-;25511:78;;25191:92;25235:7;;;;:::o;25134:47::-;25174:7;;;;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;38174:156::-;38298:25;38291:32;38174:156;38254:25;;:::i;:::-;38298:14;;:25;:::i;:::-;38291:32;:::i;:::-;;:::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;27342:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;27264:514::-;27363:67;27393:37;:25;:14;27408:9;27393:25;;:::i;:::-;27419:10;27393:37;;:::i;:::-;27363:67;:::i;:::-;27464:5;:12;;:5;:12;;:::i;:::-;27490:9;;:31;;27503:18;27490:31;:::i;:::-;;;:::i;:::-;;27486:103;;27599:33;27614:18;27599:12;27614:18;27599:5;:12;:33;:::i;:::-;27642:46;:34;:27;:16;27659:9;27642:27;;:::i;:::-;:34;:::i;:::-;27677:10;27642:46;;:::i;:::-;;27729:10;;27741:9;27752:18;;27704:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27264:514::o;27486:103::-;27537:41;;:::i;:::-;6415:38701;;;27537:41;;;;;;;;:::i;:::-;;;;27264:514;;;;:::i;:::-;:::o;6415:38701::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;37851:264::-;;38063:33;:45;37851:264;;38063:23;:45;37851:264;38033:7;;:::i;:::-;38063:12;;:23;:::i;:::-;:33;:::i;:::-;38097:10;;38063:45;;:::i;:::-;;:::i;:::-;38056:52;:::o;1232:99:3:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:38701:183:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;42932:886;;43767:34;:27;:44;42932:886;43027:10;:38;;43041:24;;:13;43055:9;43041:24;;:::i;:::-;;:::i;:::-;43027:38;:::i;:::-;;;:::i;:::-;;:63;;;;42932:886;43019:90;;;:::i;:::-;43120:64;43149:35;:25;:14;43164:9;43149:25;;:::i;:::-;43175:8;43149:35;;:::i;:::-;43120:64;:::i;:::-;43294:12;;:5;:12;;:::i;:::-;:34;;43310:18;43294:34;:::i;:::-;;;:::i;:::-;;43290:416;;42932:886;43716:13;:41;:31;:24;:13;43730:9;43716:24;;:::i;:::-;:31;:::i;:::-;43748:8;43716:41;;:::i;:::-;;43767:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;42932:886::o;43290:416::-;43514:181;43387:9;43443:57;:52;43376:21;43387:9;43376:21;:::i;:::-;43470:25;43478:16;;43443:24;43451:15;;:6;:15;;:::i;:::-;43443:24;:::i;:::-;43478:6;:16;;:::i;:::-;43470:25;:::i;:::-;43443:52;;:::i;:::-;:57;43498:2;43443:57;:::i;:::-;;;:::i;:::-;43539:19;;:5;:19;;:::i;:::-;:23;;43561:1;43539:23;:::i;:::-;;;:::i;:::-;;:89;;;;43290:416;43514:181;;;:::i;:::-;43290:416;;;43539:89;43566:62;:15;;;:37;:62;:15;43584:19;;43566:15;43584:5;:19;;:::i;:::-;43566:37;;:::i;:::-;43607:21;43566:62;:::i;:::-;;;:::i;:::-;;;43539:89;;;;43027:63;43069:10;43019:90;43069:10;:21;;43083:7;;:::i;:::-;43069:21;:::i;:::-;;;:::i;:::-;;43027:63;;;;38403:374;;38607:35;38578:64;38403:374;38499:4;;:::i;:::-;38558:9;38607:25;38547:21;38558:9;38547:21;:::i;:::-;38607:14;;:25;:::i;:::-;:35;:::i;:::-;38578:64;:::i;:::-;38657:19;;:5;:19;;:::i;:::-;:24;;38680:1;38657:24;:::i;:::-;;;:::i;:::-;;38653:42;;38713:57;38755:15;;38714:37;38713:57;38714:15;38732:19;38714:15;;38732:5;:19;;:::i;:::-;38714:37;;:::i;:::-;38755:6;:15;;:::i;:::-;38713:57;:::i;:::-;;;:::i;:::-;;38706:64;:::o;38653:42::-;38690:5;;;38683:12;:::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:3:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;32669:225:183:-;32836:41;:27;:51;32669:225;32758:68;32766:10;:38;;32780:24;;:13;32794:9;32780:24;;:::i;:::-;;:::i;:::-;32766:38;:::i;:::-;;;:::i;:::-;;32758:68;:::i;:::-;32836:16;;:27;:::i;:::-;:41;:51;:::i;:::-;32669:225::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;32015:347;32107:53;32115:10;:24;;32129:10;32115:24;:::i;:::-;;;:::i;:::-;;32107:53;:::i;:::-;32170:75;32178:48;:38;:31;:20;32199:9;32178:31;;:::i;:::-;:38;:::i;:::-;32217:8;32178:48;;:::i;:::-;32170:75;:::i;:::-;32255:44;:34;:27;:16;32272:9;32255:27;;:::i;:::-;:34;:::i;:::-;32290:8;32255:44;;:::i;:::-;;32346:8;32314:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32015:347::o;6415:38701::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38824:443::-;38951:27;38919:59;38824:443;38885:22;;:::i;:::-;38951:16;;:27;:::i;:::-;38919:59;:::i;:::-;39037:15;;:6;:15;;:::i;:::-;:20;;39056:1;39037:20;:::i;:::-;;;:::i;:::-;;39033:95;;38824:443;39141:16;;:6;:16;;:::i;:::-;:21;;39161:1;39141:21;:::i;:::-;;;:::i;:::-;;39137:100;;38824:443;39247:13;:::o;39137:100::-;39178:48;39197:29;;:::i;:::-;39178:16;:6;:16;:48;:::i;:::-;39137:100;;39033:95;39073:44;39091:26;;:::i;:::-;39073:15;:6;:15;:44;:::i;:::-;39033:95;;6415:38701;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:46:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:2:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:3;;;;;;1901:40:2;;;;;;:::i;:::-;;;;8844:165:46;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:36:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:38701:183:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;16445:2218::-;;;;;;16647:65;16677:35;:25;:14;16692:9;16677:25;;:::i;:::-;16703:8;16677:35;;:::i;:::-;16647:65;:::i;:::-;16765:9;16754:21;16765:9;16754:21;:::i;:::-;16852:5;16844:66;16852:12;;:5;:12;;:::i;:::-;:34;;16868:18;16852:34;:::i;:::-;;;:::i;:::-;;;16844:66;:::i;:::-;16972:38;:28;:24;:13;16986:9;16972:24;;:::i;:::-;:28;:::i;:::-;17001:8;16972:38;;:::i;:::-;;18062:20;;17068:12;;:5;:12;;:::i;:::-;17112:15;17090:37;17112:15;17090:19;:5;:19;:37;:::i;:::-;17137:42;17161:18;17171:7;;17161:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17137:21;:5;:21;:42;:::i;:::-;17189:21;;17209:1;17189:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;17220:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;17310:20;;:::i;:::-;17344:10;;:15;;17358:1;17344:15;:::i;:::-;;;:::i;:::-;;17340:393;;;;17743:24;17387:18;17340:393;;17743:12;17758:9;17743:5;:12;:24;:::i;:::-;17811:9;:31;;17824:18;17811:31;:::i;:::-;;;:::i;:::-;;:66;;;17340:393;17807:196;;17340:393;18062:20;;:::i;:::-;:42;;;17340:393;18058:118;;17340:393;18209:9;;;18220:11;18233:8;18243:10;18255:15;;18191:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18286:9;:22;;18299:9;18286:22;:::i;:::-;;;:::i;:::-;;18282:114;;17340:393;18473:15;;;;;:::i;:::-;:29;;18492:10;18500:1;18492:10;:::i;:::-;18473:29;:::i;:::-;;;:::i;:::-;;18469:188;;17340:393;16445:2218;;:::o;18469:188::-;18522:49;:33;18539:15;;;:::i;:::-;18522:33;:::i;:::-;:49;:::i;:::-;;;18572:8;18582:9;18600:15;18593:23;18600:15;18593:23;:::i;:::-;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;18469:188;18518:129;;;;;;;;;;;18469:188;;;;18518:129;;;;;;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18282:114::-;18343:9;18354:8;18364:9;18375;18329:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18282:114;;;;18058:118;18157:7;18136:9;;18147:8;;18157:7;;;;:::i;:::-;18058:118;;;;18062:42;18086:7;:14;:7;;:14;;:::i;:::-;:18;;18103:1;18086:18;:::i;:::-;;;:::i;:::-;;18062:42;;17807:196;17893:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;17925:8;17893:41;;:::i;:::-;;17972:9;17983:8;17953:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;17807:196;;17811:66;17846:9;;:31;;17859:18;17846:31;:::i;:::-;;;:::i;:::-;;;17811:66;;17340:393;17426:10;:16;;17439:3;17426:16;:::i;:::-;;;:::i;:::-;;17422:311;;;;17743:24;17470:19;17422:311;;17340:393;;17422:311;17743:24;17611:19;17668:9;17714:7;17668:9;17679:11;;17692:8;17702:10;17714:7;;;;;;:::i;:::-;17422:311;;9090:115:46;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:38701:183:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:46:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:38701:183:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:30:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:38701:183:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;41446:705::-;;;;;41633:26;;:::i;:::-;41713:3;41699:27;41713:12;:3;41719:6;41713:12;;:::i;:::-;41699:27;:::i;:::-;41752:1;41736:17;41752:1;41736:17;:::i;:::-;41781:6;41798:3;41789:1;:7;;41793:3;41789:7;:::i;:::-;;;:::i;:::-;;;;;41830:30;:27;:24;:13;41844:9;41830:24;;:::i;:::-;:27;:::i;:::-;41858:1;41830:30;;:::i;:::-;41878:46;41899:9;41910:2;41914:9;41878:46;;:::i;:::-;41874:126;;41798:3;;;;;:::i;:::-;41769:18;;41874:126;41798:3;41958:2;;41944:16;41978:7;41958:2;41944:16;:4;41949:5;;41944:16;;;:::i;:::-;;:::i;:::-;41978:7;:::i;:::-;41874:126;;;;41789:7;;;;;;;42032:20;42046:5;42032:20;:::i;:::-;42079:1;42067:13;42079:1;42067:13;:::i;:::-;42093:3;42082:1;:9;;42086:5;42082:9;:::i;:::-;;;:::i;:::-;;;;;42093:3;42127:4;42112:22;42127:7;;:4;42132:1;42127:7;;:::i;:::-;;:::i;:::-;42112:22;:9;42122:1;;42112:22;;;:::i;:::-;;:::i;:::-;42093:3;:::i;:::-;42067:13;;42082:9;;;;;41446:705::o;8607:156:46:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:38701:183:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:46:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:38701:183:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:36:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:38701:183:-;;-1:-1:-1;6415:38701:183;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:36:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:183;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;23148:1016::-;;;;;;23584:17;;23598:3;23584:17;:::i;:::-;;;:::i;:::-;;;23580:513;;23148:1016;;;:::o;23580:513::-;23638:23;23645:15;23638:23;:::i;:::-;23694:39;;:29;:18;23713:9;23694:29;;:::i;:::-;23724:8;23694:39;;:::i;:::-;;:::i;:::-;23751:9;:14;;23764:1;23751:14;:::i;:::-;;;:::i;:::-;;:65;;;;;23580:513;23747:336;;;23580:513;;;;23747:336;23836:53;23878:11;23836:39;:29;:18;23855:9;23836:29;;:::i;:::-;23866:8;23836:39;;:::i;:::-;:53;:::i;:::-;23941:8;23912:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;23747:336;;;;;23751:65;23769:23;:11;;;:23;:::i;:::-;:47;;23796:20;;:::i;:::-;23769:47;:::i;:::-;;;:::i;:::-;;;23751:65;;;6415:38701;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;18801:46::-;18845:2;;;:::i;:::-;18801:46;:::o;18845:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;18854:1122::-;;18962:14;:7;;:14;;:::i;:::-;:19;;18980:1;18962:19;:::i;:::-;;;:::i;:::-;;18958:32;;19067:14;:7;;:14;;:::i;:::-;:23;;19084:6;19067:23;:::i;:::-;;;:::i;:::-;;19063:36;;19240:31;19109:25;;:::i;:::-;19240:4;:22;:4;:22;:::i;:::-;:31;:22;19263:7;;19240:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;18854:1122;19236:152;;;;;;;;;;;19472:12;:5;:12;:::i;:::-;:31;;19487:16;;:::i;:::-;19472:31;:::i;:::-;;;:::i;:::-;;:65;;;;19506:16;;:::i;:::-;19472:65;19709:28;:4;:28;:::i;:::-;;;19738:9;19749:8;19759:5;19766:8;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19472:65;19705:265;;;;;;;;;;;18854:1122::o;19705:265::-;;;;;;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19472:65::-;19525:12;:5;:12;:::i;:::-;19472:65;;19236:152;19371:7;;;:::o;19236:152::-;;;;;;;19240:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;19063:36;19092:7;;;;:::o;18958:32::-;18983:7;;;;:::o;4474:107:46:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:38701:183:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:46:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;42157:511:183:-;42265:4;;:::i;:::-;42364:20;42363:51;42364:50;:40;:31;:20;42385:9;42364:31;;:::i;:::-;:40;:::i;:::-;42405:8;42364:50;;:::i;:::-;42363:51;;:::i;:::-;42359:69;;42439:64;42468:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;42439:64;:::i;:::-;42517:19;;:5;:19;;:::i;:::-;:24;;42540:1;42517:24;:::i;:::-;;;:::i;:::-;;:62;;;;42157:511;42513:80;;42611:50;:37;:50;:15;42629:19;;42611:15;42629:5;:19;;:::i;:::-;42611:37;;:::i;:::-;42652:9;42611:50;:::i;:::-;;;:::i;:::-;;;42604:57;:::o;42513:80::-;42588:5;;;42581:12;:::o;42517:62::-;42545:5;:12;;:5;:12;;:::i;:::-;:34;;42561:18;42545:34;:::i;:::-;;;:::i;:::-;;42517:62;;42359:69;42423:5;;;;42416:12;:::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:46:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:38701:183:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:36:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"104469":[{"start":3807,"length":32},{"start":14646,"length":32}],"104617":[{"start":5216,"length":32},{"start":9933,"length":32},{"start":13367,"length":32},{"start":22350,"length":32},{"start":25355,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec\",\"dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319","urls":["bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec","dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x"],"license":"MIT"}},"version":1},"id":183} \ No newline at end of file diff --git a/bindings/src/bindings/i_multi_asset_delegation.rs b/bindings/src/bindings/i_multi_asset_delegation.rs index 053adb87..643d5900 100644 --- a/bindings/src/bindings/i_multi_asset_delegation.rs +++ b/bindings/src/bindings/i_multi_asset_delegation.rs @@ -4077,6 +4077,7 @@ interface IMultiAssetDelegation { function executeOperatorUnstake() external; function executeWithdraw() external; function getAssetConfig(address token) external view returns (Types.AssetConfig memory); + function getCumStakeSeconds(address operator, Types.Asset memory asset) external view returns (uint256 cum, uint64 lastUpdate, uint256 currentStake); function getDelegation(address delegator, address operator) external view returns (uint256); function getDelegationBlueprints(address delegator, uint256 idx) external view returns (uint64[] memory); function getDelegationMode(address operator) external view returns (Types.DelegationMode); @@ -4751,6 +4752,52 @@ interface IMultiAssetDelegation { ], "stateMutability": "view" }, + { + "type": "function", + "name": "getCumStakeSeconds", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "asset", + "type": "tuple", + "internalType": "struct Types.Asset", + "components": [ + { + "name": "kind", + "type": "uint8", + "internalType": "enum Types.AssetKind" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "cum", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "lastUpdate", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "currentStake", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getDelegation", @@ -15836,6 +15883,201 @@ function getAssetConfig(address token) external view returns (Types.AssetConfig } }; #[derive(serde::Serialize, serde::Deserialize)] + #[derive()] + /**Function with signature `getCumStakeSeconds(address,(uint8,address))` and selector `0xc1f1d6fb`. +```solidity +function getCumStakeSeconds(address operator, Types.Asset memory asset) external view returns (uint256 cum, uint64 lastUpdate, uint256 currentStake); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCumStakeSecondsCall { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub asset: ::RustType, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`getCumStakeSeconds(address,(uint8,address))`](getCumStakeSecondsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCumStakeSecondsReturn { + #[allow(missing_docs)] + pub cum: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub lastUpdate: u64, + #[allow(missing_docs)] + pub currentStake: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + Types::Asset, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getCumStakeSecondsCall) -> Self { + (value.operator, value.asset) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getCumStakeSecondsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + asset: tuple.1, + } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + u64, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getCumStakeSecondsReturn) -> Self { + (value.cum, value.lastUpdate, value.currentStake) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getCumStakeSecondsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + cum: tuple.0, + lastUpdate: tuple.1, + currentStake: tuple.2, + } + } + } + } + impl getCumStakeSecondsReturn { + fn _tokenize( + &self, + ) -> ::ReturnToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.cum), + as alloy_sol_types::SolType>::tokenize(&self.lastUpdate), + as alloy_sol_types::SolType>::tokenize(&self.currentStake), + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCumStakeSecondsCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address, Types::Asset); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCumStakeSecondsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCumStakeSeconds(address,(uint8,address))"; + const SELECTOR: [u8; 4] = [193u8, 241u8, 214u8, 251u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize(&self.asset), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + getCumStakeSecondsReturn::_tokenize(ret) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(Into::into) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Into::into) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `getDelegation(address,address)` and selector `0x15049a5a`. ```solidity @@ -27291,6 +27533,8 @@ function unpause() external; #[allow(missing_docs)] getAssetConfig(getAssetConfigCall), #[allow(missing_docs)] + getCumStakeSeconds(getCumStakeSecondsCall), + #[allow(missing_docs)] getDelegation(getDelegationCall), #[allow(missing_docs)] getDelegationBlueprints(getDelegationBlueprintsCall), @@ -27509,6 +27753,7 @@ function unpause() external; [186u8, 5u8, 187u8, 245u8], [191u8, 82u8, 116u8, 167u8], [191u8, 105u8, 2u8, 6u8], + [193u8, 241u8, 214u8, 251u8], [195u8, 80u8, 130u8, 169u8], [195u8, 83u8, 193u8, 246u8], [197u8, 80u8, 217u8, 56u8], @@ -27618,6 +27863,7 @@ function unpause() external; ::core::stringify!(delegationBondLessDelay), ::core::stringify!(setTangle), ::core::stringify!(executeDelegatorUnstakeAndWithdraw), + ::core::stringify!(getCumStakeSeconds), ::core::stringify!(getDeposit), ::core::stringify!(setDelegationWhitelist), ::core::stringify!(getSlashCountForBlueprint), @@ -27727,6 +27973,7 @@ function unpause() external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -27791,7 +28038,7 @@ function unpause() external; impl alloy_sol_types::SolInterface for IMultiAssetDelegationCalls { const NAME: &'static str = "IMultiAssetDelegationCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 106usize; + const COUNT: usize = 107usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -27896,6 +28143,9 @@ function unpause() external; Self::getAssetConfig(_) => { ::SELECTOR } + Self::getCumStakeSeconds(_) => { + ::SELECTOR + } Self::getDelegation(_) => { ::SELECTOR } @@ -28862,6 +29112,17 @@ function unpause() external; } executeDelegatorUnstakeAndWithdraw }, + { + fn getCumStakeSeconds( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(IMultiAssetDelegationCalls::getCumStakeSeconds) + } + getCumStakeSeconds + }, { fn getDeposit( data: &[u8], @@ -30054,6 +30315,17 @@ function unpause() external; } executeDelegatorUnstakeAndWithdraw }, + { + fn getCumStakeSeconds( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(IMultiAssetDelegationCalls::getCumStakeSeconds) + } + getCumStakeSeconds + }, { fn getDeposit( data: &[u8], @@ -30657,6 +30929,11 @@ function unpause() external; inner, ) } + Self::getCumStakeSeconds(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getDelegation(inner) => { ::abi_encoded_size( inner, @@ -31202,6 +31479,12 @@ function unpause() external; out, ) } + Self::getCumStakeSeconds(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getDelegation(inner) => { ::abi_encode_raw( inner, @@ -32778,6 +33061,19 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::SolCallBuilder<&P, getAssetConfigCall, N> { self.call_builder(&getAssetConfigCall { token }) } + ///Creates a new call builder for the [`getCumStakeSeconds`] function. + pub fn getCumStakeSeconds( + &self, + operator: alloy::sol_types::private::Address, + asset: ::RustType, + ) -> alloy_contract::SolCallBuilder<&P, getCumStakeSecondsCall, N> { + self.call_builder( + &getCumStakeSecondsCall { + operator, + asset, + }, + ) + } ///Creates a new call builder for the [`getDelegation`] function. pub fn getDelegation( &self, diff --git a/bindings/src/bindings/i_tangle.rs b/bindings/src/bindings/i_tangle.rs index 2955dcff..3497e866 100644 --- a/bindings/src/bindings/i_tangle.rs +++ b/bindings/src/bindings/i_tangle.rs @@ -3,7 +3,7 @@ ```solidity library PaymentLib { - struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; } + struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } } ```*/ #[allow( @@ -19,7 +19,7 @@ pub mod PaymentLib { #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] /**```solidity -struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; } +struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] @@ -32,6 +32,10 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u pub totalDeposited: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] pub totalReleased: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub lastBilledCumStake: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub subscriptionBaselineStake: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -48,6 +52,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( @@ -55,6 +61,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -71,7 +79,14 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: ServiceEscrow) -> Self { - (value.token, value.balance, value.totalDeposited, value.totalReleased) + ( + value.token, + value.balance, + value.totalDeposited, + value.totalReleased, + value.lastBilledCumStake, + value.subscriptionBaselineStake, + ) } } #[automatically_derived] @@ -83,6 +98,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u balance: tuple.1, totalDeposited: tuple.2, totalReleased: tuple.3, + lastBilledCumStake: tuple.4, + subscriptionBaselineStake: tuple.5, } } } @@ -107,6 +124,14 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u as alloy_sol_types::SolType>::tokenize(&self.totalReleased), + as alloy_sol_types::SolType>::tokenize(&self.lastBilledCumStake), + as alloy_sol_types::SolType>::tokenize( + &self.subscriptionBaselineStake, + ), ) } #[inline] @@ -181,7 +206,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased)", + "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 lastBilledCumStake,uint256 subscriptionBaselineStake)", ) } #[inline] @@ -215,6 +240,18 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u 256, > as alloy_sol_types::SolType>::eip712_data_word(&self.totalReleased) .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.lastBilledCumStake, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.subscriptionBaselineStake, + ) + .0, ] .concat() } @@ -242,6 +279,16 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u > as alloy_sol_types::EventTopic>::topic_preimage_length( &rust.totalReleased, ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.lastBilledCumStake, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.subscriptionBaselineStake, + ) } #[inline] fn encode_topic_preimage( @@ -273,6 +320,18 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u &rust.totalReleased, out, ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.lastBilledCumStake, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.subscriptionBaselineStake, + out, + ); } #[inline] fn encode_topic( @@ -10983,6 +11042,8 @@ library PaymentLib { uint256 balance; uint256 totalDeposited; uint256 totalReleased; + uint256 lastBilledCumStake; + uint256 subscriptionBaselineStake; } } @@ -13544,6 +13605,16 @@ interface ITangle { "name": "totalReleased", "type": "uint256", "internalType": "uint256" + }, + { + "name": "lastBilledCumStake", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "subscriptionBaselineStake", + "type": "uint256", + "internalType": "uint256" } ] } diff --git a/bindings/src/bindings/i_tangle_full.rs b/bindings/src/bindings/i_tangle_full.rs index 8eb9ee9d..b42df407 100644 --- a/bindings/src/bindings/i_tangle_full.rs +++ b/bindings/src/bindings/i_tangle_full.rs @@ -3,7 +3,7 @@ ```solidity library PaymentLib { - struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; } + struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } } ```*/ #[allow( @@ -19,7 +19,7 @@ pub mod PaymentLib { #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] /**```solidity -struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; } +struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] @@ -32,6 +32,10 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u pub totalDeposited: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] pub totalReleased: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub lastBilledCumStake: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub subscriptionBaselineStake: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -48,6 +52,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( @@ -55,6 +61,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -71,7 +79,14 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: ServiceEscrow) -> Self { - (value.token, value.balance, value.totalDeposited, value.totalReleased) + ( + value.token, + value.balance, + value.totalDeposited, + value.totalReleased, + value.lastBilledCumStake, + value.subscriptionBaselineStake, + ) } } #[automatically_derived] @@ -83,6 +98,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u balance: tuple.1, totalDeposited: tuple.2, totalReleased: tuple.3, + lastBilledCumStake: tuple.4, + subscriptionBaselineStake: tuple.5, } } } @@ -107,6 +124,14 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u as alloy_sol_types::SolType>::tokenize(&self.totalReleased), + as alloy_sol_types::SolType>::tokenize(&self.lastBilledCumStake), + as alloy_sol_types::SolType>::tokenize( + &self.subscriptionBaselineStake, + ), ) } #[inline] @@ -181,7 +206,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased)", + "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 lastBilledCumStake,uint256 subscriptionBaselineStake)", ) } #[inline] @@ -215,6 +240,18 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u 256, > as alloy_sol_types::SolType>::eip712_data_word(&self.totalReleased) .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.lastBilledCumStake, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.subscriptionBaselineStake, + ) + .0, ] .concat() } @@ -242,6 +279,16 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u > as alloy_sol_types::EventTopic>::topic_preimage_length( &rust.totalReleased, ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.lastBilledCumStake, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.subscriptionBaselineStake, + ) } #[inline] fn encode_topic_preimage( @@ -273,6 +320,18 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u &rust.totalReleased, out, ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.lastBilledCumStake, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.subscriptionBaselineStake, + out, + ); } #[inline] fn encode_topic( @@ -12371,6 +12430,8 @@ library PaymentLib { uint256 balance; uint256 totalDeposited; uint256 totalReleased; + uint256 lastBilledCumStake; + uint256 subscriptionBaselineStake; } } @@ -15132,6 +15193,16 @@ interface ITangleFull { "name": "totalReleased", "type": "uint256", "internalType": "uint256" + }, + { + "name": "lastBilledCumStake", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "subscriptionBaselineStake", + "type": "uint256", + "internalType": "uint256" } ] } diff --git a/bindings/src/bindings/i_tangle_services.rs b/bindings/src/bindings/i_tangle_services.rs index cb75c03f..a2a52b52 100644 --- a/bindings/src/bindings/i_tangle_services.rs +++ b/bindings/src/bindings/i_tangle_services.rs @@ -3,7 +3,7 @@ ```solidity library PaymentLib { - struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; } + struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } } ```*/ #[allow( @@ -19,7 +19,7 @@ pub mod PaymentLib { #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] /**```solidity -struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; } +struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] @@ -32,6 +32,10 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u pub totalDeposited: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] pub totalReleased: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub lastBilledCumStake: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub subscriptionBaselineStake: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -48,6 +52,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( @@ -55,6 +61,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -71,7 +79,14 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[doc(hidden)] impl ::core::convert::From for UnderlyingRustTuple<'_> { fn from(value: ServiceEscrow) -> Self { - (value.token, value.balance, value.totalDeposited, value.totalReleased) + ( + value.token, + value.balance, + value.totalDeposited, + value.totalReleased, + value.lastBilledCumStake, + value.subscriptionBaselineStake, + ) } } #[automatically_derived] @@ -83,6 +98,8 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u balance: tuple.1, totalDeposited: tuple.2, totalReleased: tuple.3, + lastBilledCumStake: tuple.4, + subscriptionBaselineStake: tuple.5, } } } @@ -107,6 +124,14 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u as alloy_sol_types::SolType>::tokenize(&self.totalReleased), + as alloy_sol_types::SolType>::tokenize(&self.lastBilledCumStake), + as alloy_sol_types::SolType>::tokenize( + &self.subscriptionBaselineStake, + ), ) } #[inline] @@ -181,7 +206,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased)", + "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 lastBilledCumStake,uint256 subscriptionBaselineStake)", ) } #[inline] @@ -215,6 +240,18 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u 256, > as alloy_sol_types::SolType>::eip712_data_word(&self.totalReleased) .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.lastBilledCumStake, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.subscriptionBaselineStake, + ) + .0, ] .concat() } @@ -242,6 +279,16 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u > as alloy_sol_types::EventTopic>::topic_preimage_length( &rust.totalReleased, ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.lastBilledCumStake, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.subscriptionBaselineStake, + ) } #[inline] fn encode_topic_preimage( @@ -273,6 +320,18 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u &rust.totalReleased, out, ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.lastBilledCumStake, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.subscriptionBaselineStake, + out, + ); } #[inline] fn encode_topic( @@ -5465,6 +5524,8 @@ library PaymentLib { uint256 balance; uint256 totalDeposited; uint256 totalReleased; + uint256 lastBilledCumStake; + uint256 subscriptionBaselineStake; } } @@ -6457,6 +6518,16 @@ interface ITangleServices { "name": "totalReleased", "type": "uint256", "internalType": "uint256" + }, + { + "name": "lastBilledCumStake", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "subscriptionBaselineStake", + "type": "uint256", + "internalType": "uint256" } ] } diff --git a/src/interfaces/IMultiAssetDelegation.sol b/src/interfaces/IMultiAssetDelegation.sol index 2a19886b..17da6e0b 100644 --- a/src/interfaces/IMultiAssetDelegation.sol +++ b/src/interfaces/IMultiAssetDelegation.sol @@ -277,6 +277,15 @@ interface IMultiAssetDelegation { view returns (uint256); function getOperatorStakeForAsset(address operator, Types.Asset calldata asset) external view returns (uint256); + /// @notice F5: Lazy-realized cumulative stake-seconds for an (operator, asset) at the + /// current block. Used by `Payments.billSubscription` for TWAP-fair pricing. + function getCumStakeSeconds( + address operator, + Types.Asset calldata asset + ) + external + view + returns (uint256 cum, uint64 lastUpdate, uint256 currentStake); function getDelegation(address delegator, address operator) external view returns (uint256); function getTotalDelegation(address delegator) external view returns (uint256 total); function minOperatorStake() external view returns (uint256); From a0f6bb23906c110ac9fe76e7b4811154e7d53ef9 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Sun, 10 May 2026 16:48:32 -0600 Subject: [PATCH 5/5] fix(round4): senior-eng quality pass on F5 + G-02 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the gap items called out in the team-lead review of the consolidation PR. Each item is a correctness or API-shape concern, not a polish-only edit; tests added inline. F5 per-operator cursor (correctness) - The original F5 aggregate cum-stake cursor (`escrow.lastBilledCumStake = Σ cum_op` at last bill) was unsound under operator-set changes: when ops joined or left between bills, the next `cumDelta` summed across different sets and produced meaningless attribution. Clamping to zero on underflow was fail-soft but still wrong. - Replace with per-(service, operator) cursors in `TangleStorage._twapCursorByOp`. Each active operator's delta is computed individually against its own stored cursor; leavers are simply absent from `_activeServiceOperators` (their cursor stays parked, harmless); rejoiners are handled by the join hook in `ServicesLifecycle._finalizeJoin` which re-seeds the cursor at the current cum, forgetting off-service-time accrual. - The lazy-init bill seeds every active operator's cursor inline so the first post-init bill produces nominal exactly (matching the prior semantics for new subscriptions) and the next bill measures from the period boundary. Pure-math fallback `PaymentLib.twapBillAmount` handles baseline / interval / overflow degeneracy without reverting. - Retire the aggregate `lastBilledCumStake` field as `__reservedAggregateCursor` so the struct slot layout stays stable across the F5 commit pair. F5 fuzz tests (process) - CLAUDE.md mandates fuzz for financial logic. The TWAP arithmetic is extracted as `PaymentLib.twapBillAmount` so we can fuzz the formula over the full input space without spinning up the staking layer per run. Four fuzz tests × 1000 runs each cover: - bill scales linearly with cumDelta (monotonicity) - canonical case: `cumDelta = baseline * interval` → bill ≈ nominal - no overflow on realistic uint128 inputs - pathological baseline/interval == 0 → nominal fallback F5 operator-set behavioral tests - `test_F5_MidPeriodJoiner_NoRetroactiveBill`: dynamic-membership subscription, operator2 stakes long before joining, then joins mid-period. Asserts the post-join bill is bounded — without the per-op cursor and join hook this test detonates with a several- orders-of-magnitude over-bill (operator2's pre-join cum gets attributed to the subscription). - `test_F5_OperatorExit_BillUsesRemainingSet`: operator2 scheduled-exits through the queue; the remaining operator-1-only bill is strictly positive and strictly below nominal. G-02: drop the `recordBeaconChainEthBalanceUpdate` back-compat shim - Same-selector / silently-different-semantics is the worst class of API break. With exactly one in-tree caller (`ValidatorPod`), the shim is pure surface area for misuse. Remove it; update both call sites in `ValidatorPod` (credential proof → `recordBeaconChainDeposit`, checkpoint finalize → `recordBeaconChainRebase`); migrate every test call site to the explicit pair; drop the now-unused `InvalidDelta` error. G-02: restore `getShares(address)` `int256` ABI - The G-02 refactor silently flipped `getShares` from `int256 → uint256` at the same selector. This is a decode-time break for any downstream consumer (Rust bindings, indexer ABI lookup) and was the worst kind of ABI break in an audit-sensitive contract. Restore `int256` return (lossless cast from the new `uint256` storage; defensive saturation at `int256.max` for completeness) and add `getSharesUint(address)` as the unsigned companion. LiveBeaconTest pre-existing failure (#130) - The `test_validatorFieldsExtraction` test was silently broken on main: `bytes32(uint256(N))` right-aligns N in big-endian order, but `BeaconChainProofs._fromLittleEndianUint64` extracts the leftmost eight bytes and byte-reverses them. The test encoded its inputs wrong, so `getEffectiveBalanceGwei(fields)` returned 0 instead of 32 gwei. Fix by adding a `_leUint64Bytes32` helper that matches the SSZ convention the contract actually implements. Resolves #130. Storage layout (forge inspect validated) - `MultiAssetDelegation`: F5 adds `_cumStakeSeconds` (slot 39) + `_cumStakeSecondsLastUpdate` (slot 40); `__gap` shrinks 46→44; all downstream slots unchanged. UUPS-safe. - `Tangle`: F5 followup adds `_twapCursorByOp` (slot 77); `__gap` shrinks 41→40; all downstream slots unchanged. UUPS-safe. - `ValidatorPodManager`: G-02 breaks layout (slot 7 changed type from `int256 podOwnerShares` to `mapping(address => BeaconPool) _pools`). Contract is not upgradeable — fresh deploy required. Documented in CHANGELOG. Tests - F5: 11/11 (5 unit + 4 fuzz × 1000 runs + 2 operator-set behavior) - Beacon: now 320/320 (LiveBeaconTest fix), no regressions in VPM / pod / integration suites - Staking + Security + Scripts + Scenario: no regressions --- bindings/CHANGELOG.md | 68 ++++--- bindings/TNT_CORE_VERSION | 2 +- bindings/abi/ITangle.json | 2 +- bindings/abi/ITangleFull.json | 2 +- bindings/src/bindings/i_tangle.rs | 26 +-- bindings/src/bindings/i_tangle_full.rs | 26 +-- bindings/src/bindings/i_tangle_services.rs | 26 +-- src/TangleStorage.sol | 20 +- src/beacon/ValidatorPod.sol | 26 +-- src/beacon/ValidatorPodManager.sol | 70 +++---- src/core/Base.sol | 13 ++ src/core/Payments.sol | 150 ++++++++------- src/core/ServicesLifecycle.sol | 10 + src/libraries/PaymentLib.sol | 57 +++++- test/beacon/BeaconIntegrationTest.t.sol | 44 ++--- test/beacon/BeaconTestBase.sol | 6 +- test/beacon/LiveBeaconTest.t.sol | 43 ++++- .../beacon/ValidatorPodManagerSharePool.t.sol | 20 +- test/beacon/ValidatorPodManagerTest.t.sol | 54 +++--- test/beacon/ValidatorPodTest.t.sol | 6 +- test/security/F5TWAPBilling.t.sol | 174 +++++++++++++++++- 21 files changed, 572 insertions(+), 273 deletions(-) diff --git a/bindings/CHANGELOG.md b/bindings/CHANGELOG.md index a066a1f7..07d5da71 100644 --- a/bindings/CHANGELOG.md +++ b/bindings/CHANGELOG.md @@ -34,40 +34,56 @@ ValidatorPodManager). Single coordinated bindings cut. bill instant, which let an operator ramp stake immediately before billing and dump it after — overcharging customers when stake ramped down mid-period and undercharging when it ramped up. Billing now uses - `rate × cumDelta / (baseline × interval)` where `cumDelta` is the change in - aggregate cumulative stake-seconds across the service's active operators for - the bond asset, and `baseline` is captured at the first bill (lazy init) and - frozen for the life of the subscription. -- Round 4 F5: `IStaking` gained `getCumStakeSeconds(operator, asset)`. - Implementations must fold elapsed time × current stake into the running - counter on every stake-changing path. The in-tree `MultiAssetDelegation` - ships the working implementation; `ValidatorPodManager` ships a zero stub - (subscription billing is not currently routed through beacon-only services). -- Round 4 F5: `PaymentLib.ServiceEscrow` gained `lastBilledCumStake` and - `subscriptionBaselineStake` fields appended at the end of the struct. - Existing storage slots are preserved; pre-upgrade subscriptions are - lazy-initialized on the first post-upgrade `billSubscription` call (no - migration required). + `rate × cumDelta / (baseline × interval)` where `cumDelta` is summed + PER-OPERATOR (not aggregated) across the service's active operators for the + bond asset, and `baseline` is captured at the first bill (lazy init) and + frozen for the life of the subscription. Per-operator cursors live in + `TangleStorage._twapCursorByOp` and are re-seeded by + `ServicesLifecycle._finalizeJoin` so a mid-life joiner is not retroactively + billed for their pre-join cum activity (rejoin-safe). +- Round 4 F5: `IStaking` gained `getCumStakeSeconds(operator, asset)`, + exposed via `IMultiAssetDelegation` for Rust callers. Implementations must + fold elapsed time × current stake into the running counter on every + stake-changing path. The in-tree `MultiAssetDelegation` ships the working + implementation; `ValidatorPodManager` ships a zero stub (subscription + billing is not currently routed through beacon-only services). +- Round 4 F5: `PaymentLib.ServiceEscrow` gained `subscriptionBaselineStake` + appended at the end of the struct. A second slot (now reserved with sentinel + zero) was added in the initial F5 commit and retired in the F5 followup; the + slot layout is stable for the v0.15.0 release. Existing storage slots are + preserved; pre-upgrade subscriptions are lazy-initialized on the first + post-upgrade `billSubscription` call (no migration required). - Round 4 G-02: `ValidatorPodManager` refactored to per-pod share-pool accounting (`BeaconPool { totalAssets, totalShares }`) consistent with `MultiAssetDelegation` and `LiquidDelegationVault`. Beacon rebases now move `totalAssets` only — `shares` are invariant. Slashes remain isolated to the - affected pod. New entry points `recordBeaconChainDeposit` (mints shares) and - `recordBeaconChainRebase` (changes assets only) replace the implicit - `(int256 sharesDelta)` semantics; the legacy - `recordBeaconChainEthBalanceUpdate(address, int256)` is preserved as a - back-compat shim (positive delta == deposit, negative delta == rebase down). - `getShares` now returns `uint256` (was `int256`); negative-share states are - no longer representable. `totalShares()` is now a function returning - `uint256` (was a public `int256` state variable). Withdrawal queue snapshots - `convertToAssets(shares)` at queue time and pays out `min(snapshot, live)` at - completion. + affected pod. The legacy + `recordBeaconChainEthBalanceUpdate(address, int256)` entry point has been + REPLACED by two explicit methods: `recordBeaconChainDeposit(address, uint256)` + (mints shares for new principal) and + `recordBeaconChainRebase(address, int256)` (moves `totalAssets` only). + Call sites must migrate; there is no back-compat shim. `getShares(address)` + retains its pre-G-02 `int256` ABI (cast lossless from the new `uint256` + storage); a companion `getSharesUint(address)` returns the raw unsigned + value for callers that prefer it. `totalShares()` is now a function + returning `uint256` (was a public `int256` state variable). Withdrawal + queue snapshots `convertToAssets(shares)` at queue time and pays out + `min(snapshot, live)` at completion. The contract is not upgradeable; + existing deployments must be redeployed fresh (no in-place migration path). ### Added - Round 4 G-02: `ValidatorPodManager` views `convertToShares`, - `convertToAssets`, `totalAssetsOf`, `totalSharesOf`, `getRestakedAssets` for - share-pool introspection. + `convertToAssets`, `totalAssetsOf`, `totalSharesOf`, `getRestakedAssets`, + `getSharesUint` for share-pool introspection. + +### Fixed + +- Pre-existing test bug in `LiveBeaconTest.test_validatorFieldsExtraction` + where SSZ-encoded uint64 fields were stored big-endian, causing + `BeaconChainProofs._fromLittleEndianUint64` to read zero. Test now encodes + the leftmost-8-bytes little-endian convention SSZ actually uses. (Tracked + in #130; resolved here as part of the consolidation.) ## [0.14.0] - 2026-05-08 diff --git a/bindings/TNT_CORE_VERSION b/bindings/TNT_CORE_VERSION index 27aa14ca..3ae46493 100644 --- a/bindings/TNT_CORE_VERSION +++ b/bindings/TNT_CORE_VERSION @@ -1 +1 @@ -cd4a13f41636f320c5a8b92476b7c51542ead2ac \ No newline at end of file +a897a60b46c49a2862f08db273c3947abb63a8d8 \ No newline at end of file diff --git a/bindings/abi/ITangle.json b/bindings/abi/ITangle.json index f01d14f6..02546a02 100644 --- a/bindings/abi/ITangle.json +++ b/bindings/abi/ITangle.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"lastBilledCumStake","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastBilledCumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d\",\"dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"lastBilledCumStake","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9","urls":["bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d","dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reservedAggregateCursor","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reservedAggregateCursor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x32b362581b9959508b08c0d5c933f269a44045c39f578c2f029582fc681fcdcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a84785e09532f26510517cd6efba9b5556312370b75e9caba0d1b8caeefccf0\",\"dweb:/ipfs/QmWmNL9XAveg2kF8rtwknna6QS1SkcsmnWoWS1RMzNb8A1\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reservedAggregateCursor","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x32b362581b9959508b08c0d5c933f269a44045c39f578c2f029582fc681fcdcb","urls":["bzz-raw://3a84785e09532f26510517cd6efba9b5556312370b75e9caba0d1b8caeefccf0","dweb:/ipfs/QmWmNL9XAveg2kF8rtwknna6QS1SkcsmnWoWS1RMzNb8A1"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file diff --git a/bindings/abi/ITangleFull.json b/bindings/abi/ITangleFull.json index 4628a608..92f40738 100644 --- a/bindings/abi/ITangleFull.json +++ b/bindings/abi/ITangleFull.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"lastBilledCumStake","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastBilledCumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d\",\"dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"lastBilledCumStake","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x03ab70c03f89b0fff8985ca24ebe08649c1500eec0b8f8d3ed34426d0efb45d9","urls":["bzz-raw://688436d8f98168a4e814b8f1d392815eeebcba07238d5eb8d8c41288253a415d","dweb:/ipfs/QmQeniGuPErHVp74SHi49aWbKSoHqMj4Hxxv2i3BEAXSF4"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":150} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimDisputeBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"},{"name":"__reservedAggregateCursor","type":"uint256","internalType":"uint256"},{"name":"subscriptionBaselineStake","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"activated","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingDisputeBondRefund","inputs":[{"name":"disputer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimDisputeBond()":"ead1df17","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingDisputeBondRefund(address)":"8c2f4ee4","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"52ada2be","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDisputeBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"__reservedAggregateCursor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionBaselineStake\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"pendingDisputeBondRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"claimDisputeBond()\":{\"details\":\"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimDisputeBond()\":{\"notice\":\"Claim a dispute bond previously refunded via `cancelSlash`.\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingDisputeBondRefund(address)\":{\"notice\":\"Read pending dispute-bond refund balance for a disputer.\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c\",\"dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d\",\"dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0x32b362581b9959508b08c0d5c933f269a44045c39f578c2f029582fc681fcdcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a84785e09532f26510517cd6efba9b5556312370b75e9caba0d1b8caeefccf0\",\"dweb:/ipfs/QmWmNL9XAveg2kF8rtwknna6QS1SkcsmnWoWS1RMzNb8A1\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f\",\"dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44\",\"dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimDisputeBond"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"},{"internalType":"uint256","name":"__reservedAggregateCursor","type":"uint256"},{"internalType":"uint256","name":"subscriptionBaselineStake","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"bool","name":"activated","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"disputer","type":"address"}],"stateMutability":"view","type":"function","name":"pendingDisputeBondRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"claimDisputeBond()":{"details":"Pull-pattern (Round 3 audit fix for economic F3). The bond is credited into a per-disputer mapping at `cancelSlash` time and remains there until the disputer calls this method. Avoids re-entry into the staking module that would otherwise let the disputer's fallback slip past the pending-slash withdrawal block."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimDisputeBond()":{"notice":"Claim a dispute bond previously refunded via `cancelSlash`."},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingDisputeBondRefund(address)":{"notice":"Read pending dispute-bond refund balance for a disputer."},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((address,uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3335a5483533d182b5372989f8e19bc19c81ad619217df57f90f5661aeb49280","urls":["bzz-raw://4bd1dca0162f95c61399bb76dea347c94d602eb4bc7395274fa250bef793799c","dweb:/ipfs/QmX23j4h26irZ6vCKzoqz5gm7W9Yk6dqCZGwJqoc972FY7"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x96beec916375adf64ba5088ec169a9e60a9dadd59e1fc1ebb94714adbad3da4d","urls":["bzz-raw://fac522a8019f9d2426ea0a75653dc80fbe31ad1a2b8ac560c0ffcf43f4145d3d","dweb:/ipfs/Qmctr6wmoFGthoT6zrKoqZBfDNueiG9s1jnJqnyqGZsvHS"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0x32b362581b9959508b08c0d5c933f269a44045c39f578c2f029582fc681fcdcb","urls":["bzz-raw://3a84785e09532f26510517cd6efba9b5556312370b75e9caba0d1b8caeefccf0","dweb:/ipfs/QmWmNL9XAveg2kF8rtwknna6QS1SkcsmnWoWS1RMzNb8A1"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0xbe214b1c5e744a8aa9b00c70733803b37cf721c6d86bcde92174dc7cf6b046f8","urls":["bzz-raw://14c5cb004f0f8870ae958fdc719a3adb1f91a4b5b58ff8df0ebcb17b90ca908f","dweb:/ipfs/QmaQG7GPxun3HZjBTvjgErVtdFPKFWHYQGCL5BtDx6Xd9J"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x9b8227ca08fa7c316b4d5074f25b9ff0f44b371b4f6dc471d375cf8bddb28ede","urls":["bzz-raw://68f13b2bb8adc9ba488d09e19583e5f5a7f3c2d6092e72b166042927babc5f44","dweb:/ipfs/QmR6S1SDA5KNA2UvvtSxXJYNtREZu5Bta2UdLh9CzL7yF4"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file diff --git a/bindings/src/bindings/i_tangle.rs b/bindings/src/bindings/i_tangle.rs index 3497e866..8f29cc74 100644 --- a/bindings/src/bindings/i_tangle.rs +++ b/bindings/src/bindings/i_tangle.rs @@ -3,7 +3,7 @@ ```solidity library PaymentLib { - struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } + struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 __reservedAggregateCursor; uint256 subscriptionBaselineStake; } } ```*/ #[allow( @@ -19,7 +19,7 @@ pub mod PaymentLib { #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] /**```solidity -struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 lastBilledCumStake; uint256 subscriptionBaselineStake; } +struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; uint256 totalReleased; uint256 __reservedAggregateCursor; uint256 subscriptionBaselineStake; } ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] @@ -33,7 +33,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[allow(missing_docs)] pub totalReleased: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] - pub lastBilledCumStake: alloy::sol_types::private::primitives::aliases::U256, + pub __reservedAggregateCursor: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] pub subscriptionBaselineStake: alloy::sol_types::private::primitives::aliases::U256, } @@ -84,7 +84,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u value.balance, value.totalDeposited, value.totalReleased, - value.lastBilledCumStake, + value.__reservedAggregateCursor, value.subscriptionBaselineStake, ) } @@ -98,7 +98,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u balance: tuple.1, totalDeposited: tuple.2, totalReleased: tuple.3, - lastBilledCumStake: tuple.4, + __reservedAggregateCursor: tuple.4, subscriptionBaselineStake: tuple.5, } } @@ -126,7 +126,9 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u > as alloy_sol_types::SolType>::tokenize(&self.totalReleased), as alloy_sol_types::SolType>::tokenize(&self.lastBilledCumStake), + > as alloy_sol_types::SolType>::tokenize( + &self.__reservedAggregateCursor, + ), as alloy_sol_types::SolType>::tokenize( @@ -206,7 +208,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 lastBilledCumStake,uint256 subscriptionBaselineStake)", + "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 __reservedAggregateCursor,uint256 subscriptionBaselineStake)", ) } #[inline] @@ -243,7 +245,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u as alloy_sol_types::SolType>::eip712_data_word( - &self.lastBilledCumStake, + &self.__reservedAggregateCursor, ) .0, as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.lastBilledCumStake, + &rust.__reservedAggregateCursor, ) + as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.lastBilledCumStake, + &rust.__reservedAggregateCursor, out, ); as alloy_sol_types::SolType>::tokenize(&self.totalReleased), as alloy_sol_types::SolType>::tokenize(&self.lastBilledCumStake), + > as alloy_sol_types::SolType>::tokenize( + &self.__reservedAggregateCursor, + ), as alloy_sol_types::SolType>::tokenize( @@ -206,7 +208,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 lastBilledCumStake,uint256 subscriptionBaselineStake)", + "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 __reservedAggregateCursor,uint256 subscriptionBaselineStake)", ) } #[inline] @@ -243,7 +245,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u as alloy_sol_types::SolType>::eip712_data_word( - &self.lastBilledCumStake, + &self.__reservedAggregateCursor, ) .0, as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.lastBilledCumStake, + &rust.__reservedAggregateCursor, ) + as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.lastBilledCumStake, + &rust.__reservedAggregateCursor, out, ); as alloy_sol_types::SolType>::tokenize(&self.totalReleased), as alloy_sol_types::SolType>::tokenize(&self.lastBilledCumStake), + > as alloy_sol_types::SolType>::tokenize( + &self.__reservedAggregateCursor, + ), as alloy_sol_types::SolType>::tokenize( @@ -206,7 +208,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u #[inline] fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 lastBilledCumStake,uint256 subscriptionBaselineStake)", + "ServiceEscrow(address token,uint256 balance,uint256 totalDeposited,uint256 totalReleased,uint256 __reservedAggregateCursor,uint256 subscriptionBaselineStake)", ) } #[inline] @@ -243,7 +245,7 @@ struct ServiceEscrow { address token; uint256 balance; uint256 totalDeposited; u as alloy_sol_types::SolType>::eip712_data_word( - &self.lastBilledCumStake, + &self.__reservedAggregateCursor, ) .0, as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.lastBilledCumStake, + &rust.__reservedAggregateCursor, ) + as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.lastBilledCumStake, + &rust.__reservedAggregateCursor, out, ); uint256) internal _pendingDisputeBondRefunds; + // ═══════════════════════════════════════════════════════════════════════════ + // F5: TWAP-FAIR SUBSCRIPTION BILLING — PER-OPERATOR CURSORS + // ═══════════════════════════════════════════════════════════════════════════ + // Stores the cumulative stake-seconds value last attributed to each + // (service, operator) pair. Replaces the earlier aggregate-only cursor that + // produced a bogus `cumDelta` whenever the active-operator set changed + // between bills (sum-over-old-set vs sum-over-new-set is not a valid delta). + // + // Per-operator cursors make the billing window correct under joins, leaves, + // and rejoins: each operator is attributed only the stake-seconds they + // accrued *while bonded to this service* over the billed period. + + /// @notice Service ID => Operator => cumulative stake-seconds at the + /// operator's most recent attribution event for this service + /// (join, prior bill). Zero sentinel = "never attributed." + mapping(uint64 => mapping(address => uint256)) internal _twapCursorByOp; + // ═══════════════════════════════════════════════════════════════════════════ // RESERVED STORAGE GAP // ═══════════════════════════════════════════════════════════════════════════ /// @dev Reserved storage slots for future upgrades /// @dev Standard gap size is 50 slots. When adding new storage, decrease this gap accordingly. - uint256[41] private __gap; + /// @dev F5 per-op cursor added 1 mapping (slot); gap reduced 41 → 40. + uint256[40] private __gap; } diff --git a/src/beacon/ValidatorPod.sol b/src/beacon/ValidatorPod.sol index 2959b0a7..5b0c57fb 100644 --- a/src/beacon/ValidatorPod.sol +++ b/src/beacon/ValidatorPod.sol @@ -9,9 +9,13 @@ import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.s import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; /// @title IValidatorPodManager -/// @notice Interface for the pod manager (forward declaration) +/// @notice Interface for the pod manager (forward declaration). G-02 follow-up: +/// splits the legacy signed-delta entry point into explicit +/// deposit-mints-shares and rebase-moves-assets methods so the call +/// site's intent is unambiguous in the ABI. interface IValidatorPodManager { - function recordBeaconChainEthBalanceUpdate(address podOwner, int256 sharesDelta) external; + function recordBeaconChainDeposit(address podOwner, uint256 assets) external returns (uint256); + function recordBeaconChainRebase(address podOwner, int256 assetsDelta) external; } /// @title ValidatorPod @@ -223,14 +227,13 @@ contract ValidatorPod is ReentrancyGuard { hasRestaked = true; } - // Update shares in the pod manager + // Mint pod-pool shares for the newly verified principal. Distinct from + // the rebase path below — credential verification adds principal, so we + // call the explicit deposit entry point instead of the legacy signed + // delta. (G-02 follow-up: dropped the silent-semantics back-compat + // shim; ValidatorPod now invokes the two explicit entry points.) if (totalRestakedGwei > 0) { - podManager.recordBeaconChainEthBalanceUpdate( - podOwner, - // totalRestakedGwei fits within int256 when scaled to wei - // forge-lint: disable-next-line(unsafe-typecast) - int256(uint256(totalRestakedGwei)) * 1 gwei - ); + podManager.recordBeaconChainDeposit(podOwner, uint256(totalRestakedGwei) * 1 gwei); } } @@ -448,8 +451,9 @@ contract ValidatorPod is ReentrancyGuard { } } - // Record the balance update with the pod manager - podManager.recordBeaconChainEthBalanceUpdate(podOwner, totalDeltaWei); + // Record the checkpoint balance delta as a rebase — totalAssets-only. + // Shares are unchanged on rewards/slashes; only the share price moves. + podManager.recordBeaconChainRebase(podOwner, totalDeltaWei); lastCompletedCheckpointTimestamp = currentCheckpointTimestamp; diff --git a/src/beacon/ValidatorPodManager.sol b/src/beacon/ValidatorPodManager.sol index b02e0fbe..3aa26998 100644 --- a/src/beacon/ValidatorPodManager.sol +++ b/src/beacon/ValidatorPodManager.sol @@ -231,7 +231,6 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { error UndelegationNotFound(); error UndelegationNotReady(); error UndelegationAlreadyCompleted(); - error InvalidDelta(); // ═══════════════════════════════════════════════════════════════════════════ // CONSTRUCTOR @@ -390,49 +389,11 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { emit BeaconRebase(podOwner, assetsDelta, newTotal, pool.totalShares); } - /// @notice Backward-compatible balance update entry point. - /// @dev Translates the legacy `(owner, int256 delta)` signature into share-pool ops: - /// - If `delta > 0` AND the owner has no shares yet: treat as a fresh deposit. - /// - If `delta > 0` AND the owner already has shares: caller must use the explicit - /// `recordBeaconChainDeposit` / `recordBeaconChainRebase` methods. We default to - /// `recordBeaconChainDeposit` here for back-compat with the original semantics - /// ("positive delta == principal added"); rebases up should not have used this - /// legacy path historically. - /// - If `delta < 0`: treat as a rebase down (slash). - /// Prefer the explicit methods in new code. - function recordBeaconChainEthBalanceUpdate(address podOwner, int256 sharesDelta) external { - address pod = ownerToPod[podOwner]; - if (msg.sender != pod) revert OnlyPod(); - - if (sharesDelta == 0) revert InvalidDelta(); - - BeaconPool storage pool = _pools[podOwner]; - - if (sharesDelta > 0) { - // Treat positive delta as principal deposit (mints shares). - // forge-lint: disable-next-line(unsafe-typecast) - uint256 assets = uint256(sharesDelta); - uint256 mintedShares = _convertToShares(pool, assets); - if (mintedShares == 0) revert ZeroShares(); - - pool.totalAssets += assets; - pool.totalShares += mintedShares; - _shares[podOwner] += mintedShares; - _aggregateShares += mintedShares; - - // forge-lint: disable-next-line(unsafe-typecast) - emit SharesUpdated( - podOwner, int256(mintedShares), _shares[podOwner], pool.totalAssets, pool.totalShares - ); - } else { - // Negative delta: rebase down (beacon chain slash). - // forge-lint: disable-next-line(unsafe-typecast) - uint256 absDelta = uint256(-sharesDelta); - uint256 newTotal = absDelta >= pool.totalAssets ? 0 : pool.totalAssets - absDelta; - pool.totalAssets = newTotal; - emit BeaconRebase(podOwner, sharesDelta, newTotal, pool.totalShares); - } - } + // G-02 follow-up: the legacy `recordBeaconChainEthBalanceUpdate(int256)` + // back-compat shim was removed. The only in-tree caller (`ValidatorPod`) + // now invokes the two explicit entry points (`recordBeaconChainDeposit`, + // `recordBeaconChainRebase`) so the share-mint vs asset-rebase intent is + // visible in the call site rather than inferred from delta sign. // ═══════════════════════════════════════════════════════════════════════════ // OPERATOR MANAGEMENT @@ -1087,9 +1048,26 @@ contract ValidatorPodManager is IStaking, Ownable, ReentrancyGuard { // ═══════════════════════════════════════════════════════════════════════════ /// @notice Get pod owner's pool share balance. + /// @dev Returns `int256` to preserve the pre-G-02 ABI signature. The + /// underlying storage is `uint256` (shares cannot be negative under + /// share-pool semantics), so the cast is always lossless — share + /// balances exceeding `int256.max` are not representable in this + /// protocol's value space. Callers that need the raw unsigned value + /// should use `getSharesUint`. /// @param owner The owner address - /// @return Current pool shares (uint256, share-pool semantics). - function getShares(address owner) external view returns (uint256) { + /// @return Current pool shares; non-negative under share-pool semantics. + function getShares(address owner) external view returns (int256) { + uint256 raw = _shares[owner]; + // Cap at int256.max defensively; in practice unreachable because the + // pool's totalAssets is bounded by Ether supply (≪ 2^128 wei). + if (raw > uint256(type(int256).max)) raw = uint256(type(int256).max); + // forge-lint: disable-next-line(unsafe-typecast) + return int256(raw); + } + + /// @notice Get pod owner's pool share balance as an unsigned integer. + /// @dev Companion to `getShares` for callers that prefer `uint256` directly. + function getSharesUint(address owner) external view returns (uint256) { return _shares[owner]; } diff --git a/src/core/Base.sol b/src/core/Base.sol index b336d4a0..230c7cf6 100644 --- a/src/core/Base.sol +++ b/src/core/Base.sol @@ -311,6 +311,19 @@ abstract contract Base is return _tntToken; } + /// @notice Resolve the asset used for TWAP-fair subscription billing. + /// @dev Bond asset (TNT) when configured, otherwise native. Matches the asset + /// `IStaking.getOperatorStake` aggregates over. Defined here so both the + /// service-lifecycle join hook and `Payments._computeTwapBillAmount` + /// converge on the exact same asset. + function _bondAssetForBilling() internal view returns (Types.Asset memory asset) { + address bond = _tntToken; + if (bond == address(0)) { + return Types.Asset({ kind: Types.AssetKind.Native, token: address(0) }); + } + return Types.Asset({ kind: Types.AssetKind.ERC20, token: bond }); + } + /// @notice Configure TNT token address (set to address(0) to disable TNT defaults) /// @param token The TNT token address function setTntToken(address token) external onlyRole(ADMIN_ROLE) whenNotPaused { diff --git a/src/core/Payments.sol b/src/core/Payments.sol index 312708f5..ee16405b 100644 --- a/src/core/Payments.sol +++ b/src/core/Payments.sol @@ -299,85 +299,105 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { { PaymentLib.ServiceEscrow storage escrow = _serviceEscrows[serviceId]; - (uint256 currentCum, uint256 currentStake) = _aggregateBondStakeSnapshot(operators); - - // Forward-project cum to the end of the period being billed. `_billSubscriptionInternal` - // advances `svc.lastPaymentAt += interval` exactly once per call, so the bill window - // is always `[svc.lastPaymentAt, svc.lastPaymentAt + interval]`. When the caller is - // late (block.timestamp > periodEnd) we subtract `currentStake × tail` to estimate cum - // at the period boundary — exact when stake has been stable since `periodEnd`, and - // applied symmetrically to lazy-init below so the cursor never double-counts. + // Bill window: `[svc.lastPaymentAt, svc.lastPaymentAt + interval]`. When the + // caller is late (`block.timestamp > periodEnd`) we forward-project each + // operator's cum to `periodEnd` using their current stake, then update the + // operator's cursor to that projected value so the next bill picks up + // cleanly from `periodEnd` (no double-counting across the late tail). uint64 periodEnd = _services[serviceId].lastPaymentAt + interval; - uint256 cumAtPeriodEnd = currentCum; - if (block.timestamp > periodEnd) { - uint256 tail = currentStake * (block.timestamp - uint256(periodEnd)); - cumAtPeriodEnd = currentCum > tail ? currentCum - tail : 0; - } + bool isLate = block.timestamp > periodEnd; + uint256 tailSeconds = isLate ? block.timestamp - uint256(periodEnd) : 0; + + // Lazy-init the per-service baseline on the FIRST call against live state. + // Subsequent per-operator cursors are seeded by `_seedTwapCursorForOp` + // (called from `ServicesLifecycle._finalizeJoin`) so a mid-life join + // does NOT retroactively bill for that operator's pre-join cum activity. + // For the lazy-init bill itself we also seed every currently-active op's + // cursor inline, so the very next bill measures from `periodEnd`. + Types.Asset memory bondAsset = _bondAssetForBilling(); + IStaking staking = _getStaking(); + uint256 operatorsLength = operators.length; - // Lazy-init: single sentinel `subscriptionBaselineStake == 0` covers both - // pre-upgrade subscriptions AND newly-activated ones. We choose lazy init over - // a one-shot upgrade function so live subscriptions don't require a coordinated - // migration; the first post-upgrade `billSubscription` call seeds both cursors - // from live state and bills the standard `nominalRate` for the first window. - // From the next call onward, billing is TWAP-correct. if (escrow.subscriptionBaselineStake == 0) { - // Park the cursor at `cumAtPeriodEnd` — exactly where the NEXT bill expects - // to start. Earlier history (before lazy-init) is intentionally discarded - // since we cannot retro-attribute it to any particular billing window. - escrow.lastBilledCumStake = cumAtPeriodEnd; - // Pin the baseline. If everyone has zero stake at this moment we fall back - // to nominal billing (no fair-pricing signal); the bill remains `nominalRate` - // until stakes become observable. In practice a service activation requires - // staked operators, so this branch is unreachable outside artificial tests. + uint256 currentStake; + for (uint256 i = 0; i < operatorsLength;) { + (uint256 cumOp,, uint256 stakeOp) = staking.getCumStakeSeconds(operators[i], bondAsset); + uint256 projected = _projectToPeriodEnd(cumOp, stakeOp, tailSeconds); + _twapCursorByOp[serviceId][operators[i]] = projected; + currentStake += stakeOp; + unchecked { + ++i; + } + } + // Pin baseline. Pathological zero-stake case yields nominal billing; + // in practice service activation requires staked operators. escrow.subscriptionBaselineStake = currentStake == 0 ? 1 : currentStake; return nominalRate; } - uint256 cumDelta = cumAtPeriodEnd > escrow.lastBilledCumStake - ? cumAtPeriodEnd - escrow.lastBilledCumStake - : 0; - escrow.lastBilledCumStake = cumAtPeriodEnd; - - uint256 denom = escrow.subscriptionBaselineStake * uint256(interval); - if (denom == 0) { - // Defensive: should not occur after lazy-init, but if it ever did we degrade - // gracefully to nominal billing rather than reverting. - return nominalRate; - } - amount = (nominalRate * cumDelta) / denom; - } - - /// @notice Sum each operator's bond-asset cumulative stake-seconds and current stake. - /// @dev Aggregates only the active operators passed in (consistent with payout selection), - /// so an exited operator no longer contributes to billing weight even though their - /// historical cum is preserved on the staking side. - function _aggregateBondStakeSnapshot(address[] memory operators) - internal - view - returns (uint256 currentCum, uint256 currentStake) - { - IStaking staking = _getStaking(); - Types.Asset memory bondAsset = _bondAssetForBilling(); - uint256 operatorsLength = operators.length; + // Per-operator delta accumulation. Each operator contributes only the + // cum gained against THIS service's cursor, so: + // - new joiners contribute from their join-time cursor (no retro bill), + // - leavers contribute zero (they are absent from `operators`), + // - rejoiners contribute only post-rejoin cum (join hook re-seeds the + // cursor at their current cum, defeating off-service-time inflation). + uint256 cumDeltaPeriod; for (uint256 i = 0; i < operatorsLength;) { - (uint256 cum,, uint256 stake) = staking.getCumStakeSeconds(operators[i], bondAsset); - currentCum += cum; - currentStake += stake; + (uint256 cumOp,, uint256 stakeOp) = staking.getCumStakeSeconds(operators[i], bondAsset); + uint256 projected = _projectToPeriodEnd(cumOp, stakeOp, tailSeconds); + uint256 cursor = _twapCursorByOp[serviceId][operators[i]]; + if (cursor == 0) { + // Cursor unset: operator joined before the F5 join-hook wiring + // landed, or some external state inserted them. Seed at projected + // without billing — same lazy-init semantics applied per-operator. + _twapCursorByOp[serviceId][operators[i]] = projected; + } else if (projected > cursor) { + cumDeltaPeriod += projected - cursor; + _twapCursorByOp[serviceId][operators[i]] = projected; + } else { + // Cum cannot decrease in the staking index. A non-monotonic read + // here implies clock skew or test fixtures — fail soft, no bill. + _twapCursorByOp[serviceId][operators[i]] = projected; + } unchecked { ++i; } } + + amount = PaymentLib.twapBillAmount( + nominalRate, cumDeltaPeriod, escrow.subscriptionBaselineStake, uint256(interval) + ); } - /// @notice Resolve the asset used for TWAP billing. - /// @dev Bond asset (TNT) when configured, otherwise native. Matches the asset that - /// `IStaking.getOperatorStake` aggregates over. - function _bondAssetForBilling() internal view returns (Types.Asset memory asset) { - address bond = _tntToken; - if (bond == address(0)) { - return Types.Asset({ kind: Types.AssetKind.Native, token: address(0) }); - } - return Types.Asset({ kind: Types.AssetKind.ERC20, token: bond }); + /// @notice Forward-project an operator's cum stake-seconds to the period boundary. + /// @dev `tailSeconds` is `block.timestamp - periodEnd` when the bill is late, or + /// zero when on-time. Exact when stake has been stable since `periodEnd`; + /// conservatively under-attributes when stake ramped down in the tail. + function _projectToPeriodEnd(uint256 cumNow, uint256 stakeNow, uint256 tailSeconds) + internal + pure + returns (uint256) + { + if (tailSeconds == 0) return cumNow; + uint256 tail = stakeNow * tailSeconds; + return cumNow > tail ? cumNow - tail : 0; + } + + /// @notice Seed an operator's TWAP cursor for a service at the current block. + /// @dev Called from `ServicesLifecycle._finalizeJoin`. Idempotent for the active + /// service-operator pair: if the operator already has a non-zero cursor + /// (i.e. has been billed against this service before) we leave it + /// untouched so a join via a separate code path cannot overwrite cleanly + /// accumulated state. + function _seedTwapCursorForOp(uint64 serviceId, address operator) internal { + if (_twapCursorByOp[serviceId][operator] != 0) return; + IStaking staking = _getStaking(); + (uint256 cumOp,,) = staking.getCumStakeSeconds(operator, _bondAssetForBilling()); + // Sentinel 0 means "never seen" elsewhere. If the operator's cum is + // genuinely zero at join (no stake ever held), substitute 1 so the + // cursor is "set" — staking-side cum monotonically grows, so any + // subsequent bill computes a correct (non-zero) delta from 1. + _twapCursorByOp[serviceId][operator] = cumOp == 0 ? 1 : cumOp; } /// @notice Check if a service is billable diff --git a/src/core/ServicesLifecycle.sol b/src/core/ServicesLifecycle.sol index b23c3fa6..f1610f95 100644 --- a/src/core/ServicesLifecycle.sol +++ b/src/core/ServicesLifecycle.sol @@ -669,6 +669,16 @@ abstract contract ServicesLifecycle is Base { svc.operatorCount++; _operatorActiveServiceCount[svc.blueprintId][msg.sender]++; + // F5: re-seed this (service, operator) pair's TWAP cursor at the join + // instant. A rejoiner whose cursor still held its pre-leave value would + // otherwise be billed for off-service cum growth on the next bill. We + // overwrite unconditionally (not via the idempotent helper) because + // re-join MUST clear any stale cursor. Sentinel 1 substitutes for a + // genuine-zero cum so the cursor remains "set" — staking cum is + // monotonic, so the next bill computes a correct delta from this floor. + (uint256 _cumOpF5,,) = _staking.getCumStakeSeconds(msg.sender, _bondAssetForBilling()); + _twapCursorByOp[serviceId][msg.sender] = _cumOpF5 == 0 ? 1 : _cumOpF5; + if (_operatorStatusRegistry != address(0)) { try IOperatorStatusRegistry(_operatorStatusRegistry).registerOperator(serviceId, msg.sender) { } catch { } } diff --git a/src/libraries/PaymentLib.sol b/src/libraries/PaymentLib.sol index e9e0ffdc..f364a897 100644 --- a/src/libraries/PaymentLib.sol +++ b/src/libraries/PaymentLib.sol @@ -89,24 +89,67 @@ library PaymentLib { /// @dev F5 fields are appended at the end of the struct so existing storage /// slots are preserved across upgrades. Because `_serviceEscrows` is a /// mapping(uint64 => ServiceEscrow) (not nested in another struct), the - /// added fields claim previously-zero slots tied to each serviceId. + /// added field claims a previously-zero slot tied to each serviceId. + /// Per-operator cum cursors live separately in TangleStorage so that + /// operator joins/leaves do not corrupt the aggregate delta. struct ServiceEscrow { address token; // Payment token (address(0) = native) uint256 balance; // Current escrow balance uint256 totalDeposited; // Lifetime deposits uint256 totalReleased; // Lifetime releases - // F5: aggregated cumulative stake-seconds (sum across active operators - // for the bond asset) at the moment of the last subscription bill. - // Compared against the current aggregate to derive cumDelta for the - // window. Zero sentinel means "uninitialized" — the next bill seeds the - // cursor and bills the standard subscriptionRate (lazy migration). - uint256 lastBilledCumStake; + // F5: previously the aggregate cum cursor; superseded in the + // F5-followup pass by per-(service, operator) cursors in + // `TangleStorage._twapCursorByOp` (the aggregate cursor was unsound + // under operator joins/leaves). Slot retained as a reserved + // zero-valued field so the in-mapping struct layout stays stable + // across the F5 commit pair — pre-existing escrows always read zero + // here because the F5 commit landed in the same release window. + uint256 __reservedAggregateCursor; // F5: nominal aggregate stake used as the per-period denominator in the // TWAP bill formula. Captured at the lazy-init bill, then frozen for the // life of the subscription. Zero sentinel means "uninitialized". uint256 subscriptionBaselineStake; } + // ═══════════════════════════════════════════════════════════════════════════ + // F5: TWAP BILL FORMULA (pure) + // ═══════════════════════════════════════════════════════════════════════════ + + /// @notice Compute the TWAP-fair bill amount for one subscription period. + /// @dev Pure helper extracted from `Payments._computeTwapBillAmount` so the + /// core arithmetic (`rate * cumDelta / (baseline * interval)`) can be + /// fuzz-tested without spinning up a full staking environment. Returns + /// `nominalRate` on the pathological zero-baseline / zero-interval + /// case to match the on-chain fallback (no revert). + /// @param nominalRate The blueprint's flat subscription rate (wei per period) + /// @param cumDeltaPeriod Sum of per-operator cum stake-seconds attributed to this period + /// @param baselineStake The per-period denominator pinned at lazy-init (wei) + /// @param interval Subscription interval (seconds) + function twapBillAmount( + uint256 nominalRate, + uint256 cumDeltaPeriod, + uint256 baselineStake, + uint256 interval + ) + internal + pure + returns (uint256) + { + if (baselineStake == 0 || interval == 0) return nominalRate; + // Overflow path: `nominalRate * cumDeltaPeriod` saturates rather than + // reverts to keep billing robust against operator-side mis-accounting. + // Realistic values (nominalRate ≤ 2^96, cumDelta ≤ 2^160) keep us well + // inside 2^256, so this branch is unreachable in practice. + unchecked { + uint256 product = nominalRate * cumDeltaPeriod; + if (cumDeltaPeriod != 0 && product / cumDeltaPeriod != nominalRate) { + // Overflow detected — fall back to nominal rather than over/under bill. + return nominalRate; + } + return product / (baselineStake * interval); + } + } + // ═══════════════════════════════════════════════════════════════════════════ // PAYMENT CALCULATION // ═══════════════════════════════════════════════════════════════════════════ diff --git a/test/beacon/BeaconIntegrationTest.t.sol b/test/beacon/BeaconIntegrationTest.t.sol index 13ff1dd6..4642f90b 100644 --- a/test/beacon/BeaconIntegrationTest.t.sol +++ b/test/beacon/BeaconIntegrationTest.t.sol @@ -73,10 +73,10 @@ contract BeaconIntegrationTest is BeaconTestBase { // Simulate beacon balance updates (would normally come from proof verification) vm.prank(address(pod1)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 64 ether); + podManager.recordBeaconChainDeposit(podOwner1, 64 ether); vm.prank(address(pod2)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner2, 32 ether); + podManager.recordBeaconChainDeposit(podOwner2, 32 ether); // Verify total shares assertEq(podManager.totalShares(), 96 ether, "Total shares should be 96 ETH"); @@ -101,7 +101,7 @@ contract BeaconIntegrationTest is BeaconTestBase { // Record some shares vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 64 ether); + podManager.recordBeaconChainDeposit(podOwner1, 64 ether); // Delegate to operator vm.prank(podOwner1); @@ -172,30 +172,30 @@ contract BeaconIntegrationTest is BeaconTestBase { // Initial positive update (validator restaking) -- mints shares 1:1. vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); - assertEq(podManager.getShares(podOwner1), 32 ether, "Initial shares minted 1:1"); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "Initial shares minted 1:1"); assertEq(podManager.getRestakedAssets(podOwner1), 32 ether, "Initial assets"); // Second positive update (legacy path treats as additional principal deposit). // Shares minted = 1e18 * (32e18 + 1e3) / (32e18 + 1e3) = 1e18 (within precision). vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 1 ether); + podManager.recordBeaconChainDeposit(podOwner1, 1 ether); // Tolerate sub-1000 wei dust from the virtual offset arithmetic. - assertApproxEqAbs(podManager.getShares(podOwner1), 33 ether, 1000, "After 2nd deposit shares"); + assertApproxEqAbs(podManager.getSharesUint(podOwner1), 33 ether, 1000, "After 2nd deposit shares"); assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 33 ether, 1000, "After 2nd deposit assets"); // Negative update (slashing on beacon chain): totalAssets decreases, shares unchanged. - uint256 sharesBefore = podManager.getShares(podOwner1); + uint256 sharesBefore = podManager.getSharesUint(podOwner1); vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -5 ether); - assertEq(podManager.getShares(podOwner1), sharesBefore, "Shares unchanged on slash"); + podManager.recordBeaconChainRebase(podOwner1, -int256(5 ether)); + assertEq(podManager.getSharesUint(podOwner1), sharesBefore, "Shares unchanged on slash"); // Virtual offset (1e3) introduces sub-1000 wei rounding dust between totalAssets // and convertToAssets(totalShares). Tolerate it here. assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 28 ether, 1000, "Assets reduced by slash"); // Large negative: pool totalAssets saturates at zero (cannot go below zero). vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -30 ether); + podManager.recordBeaconChainRebase(podOwner1, -int256(30 ether)); assertEq(podManager.totalAssetsOf(podOwner1), 0, "totalAssets saturates at zero"); // With totalAssets at zero, convertToAssets(shares) returns // shares * VIRTUAL_ASSETS / (totalShares + VIRTUAL_SHARES) = up to VIRTUAL_ASSETS-1 wei. @@ -209,16 +209,16 @@ contract BeaconIntegrationTest is BeaconTestBase { ValidatorPod pod2 = _createPod(podOwner2); vm.prank(address(pod1)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); vm.prank(address(pod2)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner2, 64 ether); + podManager.recordBeaconChainDeposit(podOwner2, 64 ether); assertEq(podManager.totalShares(), 96 ether, "Aggregate shares = sum of mints"); // Negative update: rebases pool1 down (10 ETH lost), but shares unchanged. vm.prank(address(pod1)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -10 ether); + podManager.recordBeaconChainRebase(podOwner1, -int256(10 ether)); assertEq(podManager.totalShares(), 96 ether, "Aggregate shares unchanged on rebase"); assertEq(podManager.totalAssetsOf(podOwner1), 22 ether, "pod1 assets reduced by 10"); @@ -239,7 +239,7 @@ contract BeaconIntegrationTest is BeaconTestBase { // Create pod and delegate ValidatorPod pod = _createPod(podOwner1); vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); vm.prank(podOwner1); podManager.delegateTo(operator1, 10 ether); @@ -269,17 +269,17 @@ contract BeaconIntegrationTest is BeaconTestBase { // Attacker tries to update shares vm.prank(attacker); vm.expectRevert(ValidatorPodManager.OnlyPod.selector); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 1000 ether); + podManager.recordBeaconChainDeposit(podOwner1, 1000 ether); // Pod owner tries directly (not through pod) vm.prank(podOwner1); vm.expectRevert(ValidatorPodManager.OnlyPod.selector); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 1000 ether); + podManager.recordBeaconChainDeposit(podOwner1, 1000 ether); // Only the actual pod contract should work vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); - assertEq(podManager.getShares(podOwner1), 32 ether, "Update from pod should work"); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "Update from pod should work"); } function test_security_CannotOverDelegate() public { @@ -288,7 +288,7 @@ contract BeaconIntegrationTest is BeaconTestBase { // Record 32 ETH of shares vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); // Try to delegate more than available vm.prank(podOwner1); @@ -342,10 +342,10 @@ contract BeaconIntegrationTest is BeaconTestBase { vm.prank(address(pod)); uint256 gasBefore = gasleft(); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); uint256 gasUsed = gasBefore - gasleft(); - console2.log("Gas used for recordBeaconChainEthBalanceUpdate:", gasUsed); + console2.log("Gas used for recordBeaconChainDeposit:", gasUsed); assertTrue(gasUsed < BALANCE_UPDATE_GAS_BUDGET, "Balance update should remain within gas budget"); } diff --git a/test/beacon/BeaconTestBase.sol b/test/beacon/BeaconTestBase.sol index 3d72f942..58e6e5b6 100644 --- a/test/beacon/BeaconTestBase.sol +++ b/test/beacon/BeaconTestBase.sol @@ -95,9 +95,11 @@ abstract contract BeaconTestBase is Test { /// @param shares The amount of shares to grant (in wei) function _createPodWithShares(address owner, uint256 shares) internal returns (ValidatorPod) { ValidatorPod pod = _createPod(owner); - // Prank as the pod to record a positive balance update + // Prank as the pod to mint shares for the deposited principal + // (G-02 follow-up: legacy signed-delta shim was removed; use explicit + // deposit entry point for the positive principal case). vm.prank(address(pod)); - podManager.recordBeaconChainEthBalanceUpdate(owner, int256(shares)); + podManager.recordBeaconChainDeposit(owner, shares); return pod; } diff --git a/test/beacon/LiveBeaconTest.t.sol b/test/beacon/LiveBeaconTest.t.sol index e00ef66a..80a8cf26 100644 --- a/test/beacon/LiveBeaconTest.t.sol +++ b/test/beacon/LiveBeaconTest.t.sol @@ -76,34 +76,57 @@ contract LiveBeaconTest is Test { ); } + /// @notice Encode a uint64 as the leftmost 8 bytes of a bytes32, little-endian. + /// @dev SSZ encodes basic types as little-endian and pads to the chunk size on + /// the right. `BeaconChainProofs._fromLittleEndianUint64` extracts the + /// leftmost 8 bytes (`>> 192`) and byte-reverses them, so test fixtures + /// must place the LE-encoded value in that position. Previously the + /// test wrote `bytes32(uint256(N))` which right-aligns the value (BE), + /// causing the helper to read zero — the test was silently broken on + /// `main` (tracked via issue #130) and is fixed here as part of the + /// Round 4 consolidation. + function _leUint64Bytes32(uint64 n) internal pure returns (bytes32) { + // Reverse bytes (n becomes little-endian) + uint64 le = ((n & 0x00000000000000FF) << 56) + | ((n & 0x000000000000FF00) << 40) + | ((n & 0x0000000000FF0000) << 24) + | ((n & 0x00000000FF000000) << 8) + | ((n & 0x000000FF00000000) >> 8) + | ((n & 0x0000FF0000000000) >> 24) + | ((n & 0x00FF000000000000) >> 40) + | ((n & 0xFF00000000000000) >> 56); + // Place in leftmost 8 bytes + return bytes32(uint256(le) << 192); + } + /// @notice Test that validator fields extraction works correctly function test_validatorFieldsExtraction() public pure { - // Sample validator fields (SSZ encoded) + // Sample validator fields (SSZ encoded; basic types LE-packed into leftmost 8 bytes) bytes32[] memory fields = new bytes32[](8); - // Field 0: pubkey hash + // Field 0: pubkey hash (bytes32, no endian translation) fields[0] = bytes32(0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef); - // Field 1: withdrawal credentials (0x01 prefix) + // Field 1: withdrawal credentials (0x01 prefix; bytes32, no endian translation) fields[1] = bytes32(0x0100000000000000000000001234567890123456789012345678901234567890); - // Field 2: effective balance (32 ETH in gwei, little-endian) - fields[2] = bytes32(uint256(32_000_000_000)); // 32e9 gwei + // Field 2: effective balance (32 ETH in gwei, little-endian, leftmost 8 bytes) + fields[2] = _leUint64Bytes32(32_000_000_000); // 32e9 gwei - // Field 3: slashed (false) + // Field 3: slashed (false) — LE-encoded zero is just zero fields[3] = bytes32(uint256(0)); // Field 4: activation eligibility epoch - fields[4] = bytes32(uint256(0)); + fields[4] = _leUint64Bytes32(0); // Field 5: activation epoch - fields[5] = bytes32(uint256(0)); + fields[5] = _leUint64Bytes32(0); // Field 6: exit epoch (FAR_FUTURE_EPOCH) - fields[6] = bytes32(uint256(type(uint64).max)); + fields[6] = _leUint64Bytes32(type(uint64).max); // Field 7: withdrawable epoch (FAR_FUTURE_EPOCH) - fields[7] = bytes32(uint256(type(uint64).max)); + fields[7] = _leUint64Bytes32(type(uint64).max); // Extract and verify assertEq(BeaconChainProofs.getPubkeyHash(fields), fields[0]); diff --git a/test/beacon/ValidatorPodManagerSharePool.t.sol b/test/beacon/ValidatorPodManagerSharePool.t.sol index c79f27d7..55bbff70 100644 --- a/test/beacon/ValidatorPodManagerSharePool.t.sol +++ b/test/beacon/ValidatorPodManagerSharePool.t.sol @@ -32,7 +32,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { vm.prank(address(pod)); podManager.recordBeaconChainDeposit(podOwner1, 10 ether); - uint256 sharesAfterFirst = podManager.getShares(podOwner1); + uint256 sharesAfterFirst = podManager.getSharesUint(podOwner1); // First mint is 1:1 due to virtual offset symmetry on empty pool. assertEq(sharesAfterFirst, 10 ether, "first deposit mints 1:1"); @@ -40,7 +40,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { vm.prank(address(pod)); podManager.recordBeaconChainDeposit(podOwner1, 5 ether); - uint256 sharesAfterSecond = podManager.getShares(podOwner1); + uint256 sharesAfterSecond = podManager.getSharesUint(podOwner1); // Should mint approximately +5 ether shares (within virtual-offset dust). assertApproxEqAbs( sharesAfterSecond, 15 ether, VIRTUAL_OFFSET_DUST, "second deposit proportional shares" @@ -55,7 +55,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { vm.prank(address(pod)); podManager.recordBeaconChainDeposit(podOwner1, 32 ether); - uint256 sharesBefore = podManager.getShares(podOwner1); + uint256 sharesBefore = podManager.getSharesUint(podOwner1); assertEq(podManager.getRestakedAssets(podOwner1), 32 ether, "pre-rebase assets"); // Beacon-chain rewards: +1 ETH. @@ -63,7 +63,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { podManager.recordBeaconChainRebase(podOwner1, int256(1 ether)); // Shares unchanged; assets up by 1 ETH (modulo virtual-offset dust). - assertEq(podManager.getShares(podOwner1), sharesBefore, "shares unchanged on rebase up"); + assertEq(podManager.getSharesUint(podOwner1), sharesBefore, "shares unchanged on rebase up"); assertApproxEqAbs( podManager.getRestakedAssets(podOwner1), 33 ether, VIRTUAL_OFFSET_DUST, "assets up by reward" ); @@ -76,13 +76,13 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { vm.prank(address(pod)); podManager.recordBeaconChainDeposit(podOwner1, 32 ether); - uint256 sharesBefore = podManager.getShares(podOwner1); + uint256 sharesBefore = podManager.getSharesUint(podOwner1); // Beacon-chain slash: -8 ETH (-25%). vm.prank(address(pod)); podManager.recordBeaconChainRebase(podOwner1, -int256(8 ether)); - assertEq(podManager.getShares(podOwner1), sharesBefore, "shares unchanged on slash"); + assertEq(podManager.getSharesUint(podOwner1), sharesBefore, "shares unchanged on slash"); assertApproxEqAbs( podManager.getRestakedAssets(podOwner1), 24 ether, VIRTUAL_OFFSET_DUST, "assets reduced by slash" ); @@ -102,7 +102,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { assertEq(podManager.totalAssetsOf(podOwner1), 0, "totalAssets clamped to zero"); // shares still positive (32 ether), but each share now claims only the virtual-offset dust. - assertEq(podManager.getShares(podOwner1), 32 ether, "shares still outstanding"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "shares still outstanding"); assertLt( podManager.getRestakedAssets(podOwner1), VIRTUAL_OFFSET_DUST, "assets <= virtual offset on full slash" ); @@ -125,7 +125,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { vm.prank(address(pod)); podManager.recordBeaconChainDeposit(podOwner1, 1); - uint256 sharesAfterSeed = podManager.getShares(podOwner1); + uint256 sharesAfterSeed = podManager.getSharesUint(podOwner1); // Virtual-offset math: shares = 1 * (0 + 1e3) / (0 + 1e3) = 1. assertEq(sharesAfterSeed, 1, "seed deposit mints 1 share"); @@ -174,7 +174,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { assertEq(podManager.totalAssetsOf(podOwner1), 16 ether, "podA assets reduced"); assertEq(podManager.totalAssetsOf(podOwner2), 32 ether, "podB assets unaffected"); - assertEq(podManager.getShares(podOwner2), 32 ether, "podB shares unaffected"); + assertEq(podManager.getSharesUint(podOwner2), 32 ether, "podB shares unaffected"); assertEq( podManager.getRestakedAssets(podOwner2), 32 ether, "podB asset-equivalent unchanged" ); @@ -242,7 +242,7 @@ contract ValidatorPodManagerSharePoolTest is BeaconTestBase { // Payout is exactly 10 ETH (snapshot == live, no rebase happened). assertEq(podOwner1.balance, balBefore + 10 ether, "exact payout at unchanged rate"); - assertEq(podManager.getShares(podOwner1), 22 ether, "remaining shares decreased"); + assertEq(podManager.getSharesUint(podOwner1), 22 ether, "remaining shares decreased"); assertEq(podManager.totalAssetsOf(podOwner1), 22 ether, "pool totalAssets reduced"); assertEq(podManager.totalSharesOf(podOwner1), 22 ether, "pool totalShares reduced"); } diff --git a/test/beacon/ValidatorPodManagerTest.t.sol b/test/beacon/ValidatorPodManagerTest.t.sol index 7aed73cb..7a1c3a54 100644 --- a/test/beacon/ValidatorPodManagerTest.t.sol +++ b/test/beacon/ValidatorPodManagerTest.t.sol @@ -170,9 +170,9 @@ contract ValidatorPodManagerTest is BeaconTestBase { address pod = podManager.createPod(); // Simulate shares being added (via beacon chain proof in real scenario) - // We need to call recordBeaconChainEthBalanceUpdate from the pod + // We need to call recordBeaconChainDeposit / recordBeaconChainRebase from the pod vm.prank(pod); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, int256(10 ether)); + podManager.recordBeaconChainDeposit(podOwner1, 10 ether); // Delegate to operator vm.prank(podOwner1); @@ -194,7 +194,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address pod = podManager.createPod(); vm.prank(pod); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, int256(10 ether)); + podManager.recordBeaconChainDeposit(podOwner1, 10 ether); // Delegate then undelegate (queue-based) vm.prank(podOwner1); @@ -583,54 +583,54 @@ contract ValidatorPodManagerTest is BeaconTestBase { // ═══════════════════════════════════════════════════════════════════════════ function test_getShares_Initial() public view { - assertEq(podManager.getShares(podOwner1), 0, "Initial shares should be zero"); + assertEq(podManager.getSharesUint(podOwner1), 0, "Initial shares should be zero"); } - function test_recordBeaconChainEthBalanceUpdate_OnlyPod() public { + function test_recordBeaconChainDeposit_OnlyPod() public { vm.prank(podOwner1); podManager.createPod(); // Non-pod caller should fail vm.prank(attacker); vm.expectRevert(ValidatorPodManager.OnlyPod.selector); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 1 ether); + podManager.recordBeaconChainDeposit(podOwner1, 1 ether); } - function test_recordBeaconChainEthBalanceUpdate_Success() public { + function test_recordBeaconChainDeposit_Success() public { vm.prank(podOwner1); address podAddr = podManager.createPod(); // Pod calls to record balance update vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); - assertEq(podManager.getShares(podOwner1), 32 ether, "Shares should be updated"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "Shares should be updated"); assertEq(podManager.totalShares(), 32 ether, "Total shares should be updated"); } /// @notice G-02: Share-pool semantics replace raw amount accounting. /// @dev Negative deltas (slashes) reduce `totalAssets` only. The owner's `shares` /// balance is invariant on rebases. - function test_recordBeaconChainEthBalanceUpdate_NegativeDelta() public { + function test_recordBeaconChainRebase_NegativeDelta() public { vm.prank(podOwner1); address podAddr = podManager.createPod(); // Initial positive update mints shares 1:1. vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); // Negative delta (slashing) is a rebase-down: assets fall, shares unchanged. vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, -5 ether); + podManager.recordBeaconChainRebase(podOwner1, -int256(5 ether)); - assertEq(podManager.getShares(podOwner1), 32 ether, "Shares unchanged on rebase"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "Shares unchanged on rebase"); assertEq(podManager.totalShares(), 32 ether, "Aggregate shares unchanged"); assertEq(podManager.totalAssetsOf(podOwner1), 27 ether, "Pool assets reduced"); // Asset-equivalent has tiny dust due to virtual offset (1e3 wei). Tolerate it. assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 27 ether, 1000, "Owner asset-equivalent reduced"); } - function test_recordBeaconChainEthBalanceUpdate_MultiplePods() public { + function test_recordBeaconChainDeposit_MultiplePods() public { // Create two pods vm.prank(podOwner1); address pod1 = podManager.createPod(); @@ -640,13 +640,13 @@ contract ValidatorPodManagerTest is BeaconTestBase { // Record updates for both vm.prank(pod1); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); vm.prank(pod2); - podManager.recordBeaconChainEthBalanceUpdate(podOwner2, 64 ether); + podManager.recordBeaconChainDeposit(podOwner2, 64 ether); - assertEq(podManager.getShares(podOwner1), 32 ether, "Pod1 shares correct"); - assertEq(podManager.getShares(podOwner2), 64 ether, "Pod2 shares correct"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "Pod1 shares correct"); + assertEq(podManager.getSharesUint(podOwner2), 64 ether, "Pod2 shares correct"); assertEq(podManager.totalShares(), 96 ether, "Total shares correct"); } @@ -669,7 +669,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); // Queue withdrawal vm.prank(podOwner1); @@ -705,7 +705,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { // Only have 10 ETH shares vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 10 ether); + podManager.recordBeaconChainDeposit(podOwner1, 10 ether); // Try to queue more than available vm.prank(podOwner1); @@ -720,7 +720,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); // Delegate some shares vm.prank(podOwner1); @@ -737,7 +737,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); // Queue multiple withdrawals vm.prank(podOwner1); @@ -760,7 +760,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); // Fund the pod with actual ETH vm.deal(podAddr, 32 ether); @@ -788,7 +788,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { assertEq(podOwner1.balance, balanceBefore + 10 ether, "ETH should be transferred"); assertEq(podManager.queuedShares(podOwner1), 0, "Queued shares should be cleared"); - assertEq(podManager.getShares(podOwner1), 22 ether, "Remaining shares should be reduced"); + assertEq(podManager.getSharesUint(podOwner1), 22 ether, "Remaining shares should be reduced"); } function test_completeWithdrawal_NotFound() public { @@ -804,7 +804,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); vm.prank(podOwner1); bytes32 withdrawalRoot = podManager.queueWithdrawal(10 ether); @@ -820,7 +820,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 32 ether); + podManager.recordBeaconChainDeposit(podOwner1, 32 ether); vm.deal(podAddr, 32 ether); @@ -843,7 +843,7 @@ contract ValidatorPodManagerTest is BeaconTestBase { address podAddr = podManager.createPod(); vm.prank(podAddr); - podManager.recordBeaconChainEthBalanceUpdate(podOwner1, 100 ether); + podManager.recordBeaconChainDeposit(podOwner1, 100 ether); assertEq(podManager.getAvailableToWithdraw(podOwner1), 100 ether, "Initially all available"); diff --git a/test/beacon/ValidatorPodTest.t.sol b/test/beacon/ValidatorPodTest.t.sol index cedabe40..11c3184b 100644 --- a/test/beacon/ValidatorPodTest.t.sol +++ b/test/beacon/ValidatorPodTest.t.sol @@ -296,7 +296,7 @@ contract ValidatorPodTest is BeaconTestBase { assertTrue(pod.hasRestaked(), "restake flag should be true"); assertEq(pod.activeValidatorCount(), 1, "one validator should be active"); assertEq(pod.totalRestakedBalanceGwei(), effectiveBalance, "restaked gwei tracked"); - assertEq(podManager.getShares(podOwner1), 32 ether, "shares minted for pod owner"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "shares minted for pod owner"); ValidatorTypes.ValidatorInfo memory info = pod.getValidatorInfo(pubkeyHash); assertEq(info.validatorIndex, validatorIndex, "validator index stored"); @@ -414,7 +414,7 @@ contract ValidatorPodTest is BeaconTestBase { restakeProof.validatorFields ); - assertEq(podManager.getShares(podOwner1), 32 ether, "shares minted pre-checkpoint"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "shares minted pre-checkpoint"); uint64 checkpointTimestamp = restakeProof.beaconTimestamp + 12; uint64 newBalance = 31_000_000_000; @@ -440,7 +440,7 @@ contract ValidatorPodTest is BeaconTestBase { // The pod owner's share balance is unchanged (still 32 ether minted at deposit), // but the asset-equivalent reflects the new beacon balance (~31 ETH; the virtual // offset introduces sub-1000 wei dust). - assertEq(podManager.getShares(podOwner1), 32 ether, "shares unchanged on rebase"); + assertEq(podManager.getSharesUint(podOwner1), 32 ether, "shares unchanged on rebase"); assertApproxEqAbs(podManager.getRestakedAssets(podOwner1), 31 ether, 1000, "assets reflect new balance"); uint64 expectedFactor = uint64((uint256(1e18) * uint256(newBalance)) / uint256(initialBalance)); diff --git a/test/security/F5TWAPBilling.t.sol b/test/security/F5TWAPBilling.t.sol index bd5477f6..72400245 100644 --- a/test/security/F5TWAPBilling.t.sol +++ b/test/security/F5TWAPBilling.t.sol @@ -34,8 +34,16 @@ contract F5TWAPBillingTest is BaseTest { // ───────────────────────────────────────────────────────────────────────── function _setUpSubscription() internal { + _setUpSubscriptionImpl(Types.MembershipModel.Fixed); + } + + function _setUpDynamicSubscription() internal { + _setUpSubscriptionImpl(Types.MembershipModel.Dynamic); + } + + function _setUpSubscriptionImpl(Types.MembershipModel membership) internal { Types.BlueprintConfig memory config = Types.BlueprintConfig({ - membership: Types.MembershipModel.Fixed, + membership: membership, pricing: Types.PricingModel.Subscription, minOperators: 1, maxOperators: 5, @@ -222,15 +230,173 @@ contract F5TWAPBillingTest is BaseTest { uint256 charged1 = _billOnceAndMeasure(); assertEq(charged1, SUB_RATE, "first post-upgrade bill is nominal"); - // After lazy-init, escrow.subscriptionBaselineStake and lastBilledCumStake - // are populated; subsequent bills are TWAP-correct against that baseline. + // After lazy-init, escrow.subscriptionBaselineStake is populated; + // per-operator cursors live in `TangleStorage._twapCursorByOp` and are + // exercised by the constant-stake check below. The struct-level reserved + // slot is always zero (aggregate cursor was retired in the F5 followup). PaymentLib.ServiceEscrow memory esc = _escrow(); assertGt(esc.subscriptionBaselineStake, 0, "baseline seeded"); - assertGt(esc.lastBilledCumStake, 0, "cum cursor seeded"); // Advance one more interval at constant stake → TWAP ratio == 1 → bill == nominal. vm.warp(block.timestamp + SUB_INTERVAL); uint256 charged2 = _billOnceAndMeasure(); assertApproxEqAbs(charged2, SUB_RATE, 1, "post-init constant-stake bill == nominal"); } + + // ───────────────────────────────────────────────────────────────────────── + // OPERATOR-SET CHANGE: mid-life join must not retroactively bill for the + // joiner's pre-join cum activity. Without the F5 per-operator cursor + + // join hook in `ServicesLifecycle._finalizeJoin`, a fresh joiner's full + // historical cum would land in cumDelta and produce a massive over-bill + // on the following period. + // ───────────────────────────────────────────────────────────────────────── + + function test_F5_MidPeriodJoiner_NoRetroactiveBill() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + + // Dynamic-membership service so operator2 can `joinService` mid-life. + _setUpDynamicSubscription(); + + // Bill once (lazy-init) and bill again at constant single-operator stake + // to confirm baseline is settled before the second operator joins. + vm.warp(t0 + SUB_INTERVAL); + uint256 charged1 = _billOnceAndMeasure(); + assertEq(charged1, SUB_RATE, "first bill (lazy-init) is nominal"); + + // Register operator2 with substantial stake well BEFORE they join. The + // staking-side cum-stake counter will accrue for operator2 over the + // pre-join interval; without the join hook this would leak into the + // first post-join bill. + vm.prank(operator2); + staking.registerOperator{ value: BASE_OP_STAKE * 4 }(); + vm.prank(operator2); + staking.setDelegationMode(Types.DelegationMode.Open); + _directRegisterOperator(operator2, blueprintId, ""); + + vm.warp(block.timestamp + SUB_INTERVAL / 2); + + // Joiner enters the service mid-period. The join hook re-seeds + // `_twapCursorByOp[serviceId][operator2]` at this instant; pre-join + // cum activity is forgotten by the billing layer. + vm.prank(operator2); + tangle.joinService(serviceId, 5000); + + vm.warp(block.timestamp + SUB_INTERVAL); + + // Now bill the next full period. The cumDelta_op for operator2 + // should be (currentStake_op2 × interval), exactly the period's + // worth — not the much larger value that includes pre-join time. + // Combined with operator1's interval-worth of stake-seconds, the + // ratio is `(stake1 + stake2_post_join) / baseline_stake1_only`. + uint256 charged2 = _billOnceAndMeasure(); + + // Sanity floor: the bill MUST charge at least nominal (operator1 + // alone produced nominal at constant stake) and MUST NOT exceed + // ~5× nominal (the realistic upper bound given op2's stake is 4× + // op1's). A retroactive bill would explode well past this cap. + assertGt(charged2, SUB_RATE - 1, "bill must include op1's continuing stake"); + assertLt(charged2, SUB_RATE * 6, "no retroactive bill for op2's pre-join cum"); + } + + function test_F5_OperatorExit_BillUsesRemainingSet() public { + uint256 t0 = 1_000_000; + vm.warp(t0); + _setUpDynamicSubscription(); + + // Bring operator2 in alongside operator1 so we can test exit semantics + // without bottoming out below `minOperators` (= 1). + vm.prank(operator2); + staking.registerOperator{ value: BASE_OP_STAKE }(); + vm.prank(operator2); + staking.setDelegationMode(Types.DelegationMode.Open); + _directRegisterOperator(operator2, blueprintId, ""); + vm.prank(operator2); + tangle.joinService(serviceId, 5000); + + vm.warp(t0 + SUB_INTERVAL); + _billOnceAndMeasure(); // lazy-init across BOTH operators + + // Operator2 schedules + executes an exit. The blueprint's exit queue + // duration (default) gates immediate `leaveService`, so we go through + // the queue path and advance time past it. + vm.prank(operator2); + tangle.scheduleExit(serviceId); + vm.warp(block.timestamp + 30 days); // > default exitQueueDuration + vm.prank(operator2); + tangle.executeExit(serviceId); + + // Bill the next full period after op2's exit. + vm.warp(block.timestamp + SUB_INTERVAL); + uint256 charged = _billOnceAndMeasure(); + + // operator1 alone produced the lazy-init baseline. After op2 exits, + // operator1 still contributes one full period of stake-seconds — + // ratio = stake1 * interval / (stake1+stake2) * interval = stake1 / (stake1+stake2). + // With equal stakes this is ~0.5x nominal; we assert the bill is + // strictly less than nominal (proving op2 didn't drag the bill back + // up) and strictly positive (proving op1 still contributes). + assertLt(charged, SUB_RATE, "bill drops after op2 exit"); + assertGt(charged, 0, "remaining operator still contributes"); + } + + // ───────────────────────────────────────────────────────────────────────── + // FUZZ: pure billing math (PaymentLib.twapBillAmount) + // CLAUDE.md requires fuzz tests for financial logic. The TWAP formula is + // extracted as a pure function so we can fuzz over the full input space + // (rate, cumDelta, baseline, interval) without spinning up the staking + // layer per run. + // ───────────────────────────────────────────────────────────────────────── + + function testFuzz_F5_BillProportionalToCumDelta( + uint96 rate, + uint96 baseline, + uint32 interval, + uint64 cumDelta + ) + public + pure + { + // Reject degenerate inputs the on-chain path also short-circuits on. + vm.assume(rate > 0); + vm.assume(baseline > 0); + vm.assume(interval > 0); + + uint256 amount = PaymentLib.twapBillAmount(rate, cumDelta, baseline, interval); + + // Invariant 1: bill scales linearly with cumDelta (mod floor). + if (cumDelta == 0) { + assertEq(amount, 0, "zero stake-time -> zero bill"); + } else { + // Double cumDelta should roughly double the bill (mod floor). + uint256 doubled = PaymentLib.twapBillAmount(rate, uint256(cumDelta) * 2, baseline, interval); + // doubled >= amount * 2 - 1 (floor division can shave 1 wei) + assertGe(doubled + 1, amount * 2, "monotonicity under cumDelta doubling"); + } + } + + function testFuzz_F5_BillCanonicalAtFullStakeTime(uint96 rate, uint96 baseline, uint32 interval) public pure { + vm.assume(rate > 0); + vm.assume(baseline > 0); + vm.assume(interval > 0); + // cumDelta = baseline * interval => time-weighted ratio is 1 => bill == nominal + uint256 cumDelta = uint256(baseline) * uint256(interval); + uint256 amount = PaymentLib.twapBillAmount(rate, cumDelta, baseline, interval); + assertApproxEqAbs(amount, rate, 1, "full-stake-time period -> bill == nominal (mod floor)"); + } + + function testFuzz_F5_NoOverflowOnRealisticInputs(uint128 rate, uint128 baseline, uint32 interval) public pure { + vm.assume(rate > 0); + vm.assume(baseline > 0); + vm.assume(interval > 0); + // cumDelta at baseline-equivalent ratio. Should never revert at uint128 inputs. + uint256 cumDelta = uint256(baseline) * uint256(interval); + PaymentLib.twapBillAmount(rate, cumDelta, baseline, interval); + } + + function testFuzz_F5_PathologicalDenomReturnsNominal(uint96 rate, uint64 cumDelta) public pure { + // baseline == 0 OR interval == 0 falls back to nominal (matches on-chain branch). + assertEq(PaymentLib.twapBillAmount(rate, cumDelta, 0, 1 days), rate, "zero baseline -> nominal"); + assertEq(PaymentLib.twapBillAmount(rate, cumDelta, 1 ether, 0), rate, "zero interval -> nominal"); + } }