Skip to main content

eigen_utils/slashing/middleware/
operator_state_retriever.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface OperatorStateRetriever {
6    struct CheckSignaturesIndices {
7        uint32[] nonSignerQuorumBitmapIndices;
8        uint32[] quorumApkIndices;
9        uint32[] totalStakeIndices;
10        uint32[][] nonSignerStakeIndices;
11    }
12    struct Operator {
13        address operator;
14        bytes32 operatorId;
15        uint96 stake;
16    }
17
18    error OperatorNotRegistered();
19
20    function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators);
21    function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds);
22    function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (CheckSignaturesIndices memory);
23    function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (Operator[][] memory);
24    function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, Operator[][] memory);
25    function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory);
26}
27```
28
29...which was generated by the following JSON ABI:
30```json
31[
32  {
33    "type": "function",
34    "name": "getBatchOperatorFromId",
35    "inputs": [
36      {
37        "name": "registryCoordinator",
38        "type": "address",
39        "internalType": "contract ISlashingRegistryCoordinator"
40      },
41      {
42        "name": "operatorIds",
43        "type": "bytes32[]",
44        "internalType": "bytes32[]"
45      }
46    ],
47    "outputs": [
48      {
49        "name": "operators",
50        "type": "address[]",
51        "internalType": "address[]"
52      }
53    ],
54    "stateMutability": "view"
55  },
56  {
57    "type": "function",
58    "name": "getBatchOperatorId",
59    "inputs": [
60      {
61        "name": "registryCoordinator",
62        "type": "address",
63        "internalType": "contract ISlashingRegistryCoordinator"
64      },
65      {
66        "name": "operators",
67        "type": "address[]",
68        "internalType": "address[]"
69      }
70    ],
71    "outputs": [
72      {
73        "name": "operatorIds",
74        "type": "bytes32[]",
75        "internalType": "bytes32[]"
76      }
77    ],
78    "stateMutability": "view"
79  },
80  {
81    "type": "function",
82    "name": "getCheckSignaturesIndices",
83    "inputs": [
84      {
85        "name": "registryCoordinator",
86        "type": "address",
87        "internalType": "contract ISlashingRegistryCoordinator"
88      },
89      {
90        "name": "referenceBlockNumber",
91        "type": "uint32",
92        "internalType": "uint32"
93      },
94      {
95        "name": "quorumNumbers",
96        "type": "bytes",
97        "internalType": "bytes"
98      },
99      {
100        "name": "nonSignerOperatorIds",
101        "type": "bytes32[]",
102        "internalType": "bytes32[]"
103      }
104    ],
105    "outputs": [
106      {
107        "name": "",
108        "type": "tuple",
109        "internalType": "struct OperatorStateRetriever.CheckSignaturesIndices",
110        "components": [
111          {
112            "name": "nonSignerQuorumBitmapIndices",
113            "type": "uint32[]",
114            "internalType": "uint32[]"
115          },
116          {
117            "name": "quorumApkIndices",
118            "type": "uint32[]",
119            "internalType": "uint32[]"
120          },
121          {
122            "name": "totalStakeIndices",
123            "type": "uint32[]",
124            "internalType": "uint32[]"
125          },
126          {
127            "name": "nonSignerStakeIndices",
128            "type": "uint32[][]",
129            "internalType": "uint32[][]"
130          }
131        ]
132      }
133    ],
134    "stateMutability": "view"
135  },
136  {
137    "type": "function",
138    "name": "getOperatorState",
139    "inputs": [
140      {
141        "name": "registryCoordinator",
142        "type": "address",
143        "internalType": "contract ISlashingRegistryCoordinator"
144      },
145      {
146        "name": "quorumNumbers",
147        "type": "bytes",
148        "internalType": "bytes"
149      },
150      {
151        "name": "blockNumber",
152        "type": "uint32",
153        "internalType": "uint32"
154      }
155    ],
156    "outputs": [
157      {
158        "name": "",
159        "type": "tuple[][]",
160        "internalType": "struct OperatorStateRetriever.Operator[][]",
161        "components": [
162          {
163            "name": "operator",
164            "type": "address",
165            "internalType": "address"
166          },
167          {
168            "name": "operatorId",
169            "type": "bytes32",
170            "internalType": "bytes32"
171          },
172          {
173            "name": "stake",
174            "type": "uint96",
175            "internalType": "uint96"
176          }
177        ]
178      }
179    ],
180    "stateMutability": "view"
181  },
182  {
183    "type": "function",
184    "name": "getOperatorState",
185    "inputs": [
186      {
187        "name": "registryCoordinator",
188        "type": "address",
189        "internalType": "contract ISlashingRegistryCoordinator"
190      },
191      {
192        "name": "operatorId",
193        "type": "bytes32",
194        "internalType": "bytes32"
195      },
196      {
197        "name": "blockNumber",
198        "type": "uint32",
199        "internalType": "uint32"
200      }
201    ],
202    "outputs": [
203      {
204        "name": "",
205        "type": "uint256",
206        "internalType": "uint256"
207      },
208      {
209        "name": "",
210        "type": "tuple[][]",
211        "internalType": "struct OperatorStateRetriever.Operator[][]",
212        "components": [
213          {
214            "name": "operator",
215            "type": "address",
216            "internalType": "address"
217          },
218          {
219            "name": "operatorId",
220            "type": "bytes32",
221            "internalType": "bytes32"
222          },
223          {
224            "name": "stake",
225            "type": "uint96",
226            "internalType": "uint96"
227          }
228        ]
229      }
230    ],
231    "stateMutability": "view"
232  },
233  {
234    "type": "function",
235    "name": "getQuorumBitmapsAtBlockNumber",
236    "inputs": [
237      {
238        "name": "registryCoordinator",
239        "type": "address",
240        "internalType": "contract ISlashingRegistryCoordinator"
241      },
242      {
243        "name": "operatorIds",
244        "type": "bytes32[]",
245        "internalType": "bytes32[]"
246      },
247      {
248        "name": "blockNumber",
249        "type": "uint32",
250        "internalType": "uint32"
251      }
252    ],
253    "outputs": [
254      {
255        "name": "",
256        "type": "uint256[]",
257        "internalType": "uint256[]"
258      }
259    ],
260    "stateMutability": "view"
261  },
262  {
263    "type": "error",
264    "name": "OperatorNotRegistered",
265    "inputs": []
266  }
267]
268```*/
269#[allow(
270    non_camel_case_types,
271    non_snake_case,
272    clippy::pub_underscore_fields,
273    clippy::style,
274    clippy::empty_structs_with_brackets
275)]
276pub mod OperatorStateRetriever {
277    use super::*;
278    use alloy::sol_types as alloy_sol_types;
279    /// The creation / init bytecode of the contract.
280    ///
281    /// ```text
282    ///0x6080604052348015600e575f5ffd5b50611c088061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806331b36bd9146100645780633563b0d11461008d5780634d2b57fe146100ad5780634f739f74146100cd5780635c155662146100ed578063cefdc1d41461010d575b5f5ffd5b6100776100723660046112df565b61012e565b60405161008491906113cc565b60405180910390f35b6100a061009b366004611406565b61023f565b6040516100849190611567565b6100c06100bb3660046115d4565b6106a7565b6040516100849190611620565b6100e06100db36600461166b565b6107b1565b604051610084919061175b565b6101006100fb366004611811565b610e2e565b6040516100849190611870565b61012061011b3660046118a7565b610fe3565b6040516100849291906118db565b606081516001600160401b0381111561014957610149611279565b604051908082528060200260200182016040528015610172578160200160208202803683370190505b5090505f5b825181101561023857836001600160a01b03166313542a4e8483815181106101a1576101a16118fb565b60200260200101516040518263ffffffff1660e01b81526004016101d491906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610213919061190f565b828281518110610225576102256118fb565b6020908102919091010152600101610177565b5092915050565b60605f846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a29190611926565b90505f856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103059190611926565b90505f866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610344573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103689190611926565b90505f86516001600160401b0381111561038457610384611279565b6040519080825280602002602001820160405280156103b757816020015b60608152602001906001900390816103a25790505b5090505f5b875181101561069b575f8882815181106103d8576103d86118fb565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291505f906001600160a01b038716906389026245906044015f60405180830381865afa158015610435573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261045c9190810190611941565b905080516001600160401b0381111561047757610477611279565b6040519080825280602002602001820160405280156104c057816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816104955790505b508484815181106104d3576104d36118fb565b60209081029190910101525f5b8151811015610690576040518060600160405280876001600160a01b03166347b314e8858581518110610515576105156118fb565b60200260200101516040518263ffffffff1660e01b815260040161053b91815260200190565b602060405180830381865afa158015610556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057a9190611926565b6001600160a01b0316815260200183838151811061059a5761059a6118fb565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105c8576105c86118fb565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064691906119d1565b6001600160601b0316815250858581518110610664576106646118fb565b6020026020010151828151811061067d5761067d6118fb565b60209081029190910101526001016104e0565b5050506001016103bc565b50979650505050505050565b606081516001600160401b038111156106c2576106c2611279565b6040519080825280602002602001820160405280156106eb578160200160208202803683370190505b5090505f5b825181101561023857836001600160a01b031663296bb06484838151811061071a5761071a6118fb565b60200260200101516040518263ffffffff1660e01b815260040161074091815260200190565b602060405180830381865afa15801561075b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077f9190611926565b828281518110610791576107916118fb565b6001600160a01b03909216602092830291909101909101526001016106f0565b6107dc6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610819573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190611926565b905061086a6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b0389169063c391425e90610898908a9088906004016119f7565b5f60405180830381865afa1580156108b2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108d99190810190611a15565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061090b908a908a908a90600401611acc565b5f60405180830381865afa158015610925573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261094c9190810190611a15565b6040820152846001600160401b0381111561096957610969611279565b60405190808252806020026020018201604052801561099c57816020015b60608152602001906001900390816109875790505b5060608201525f5b60ff8116861115610d475784515f906001600160401b038111156109ca576109ca611279565b6040519080825280602002602001820160405280156109f3578160200160208202803683370190505b5083606001518360ff1681518110610a0d57610a0d6118fb565b60209081029190910101525f5b8651811015610c53575f8b6001600160a01b03166304ec6351898481518110610a4557610a456118fb565b60200260200101518d885f01518681518110610a6357610a636118fb565b60200260200101516040518463ffffffff1660e01b8152600401610aa09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610abb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adf9190611af4565b9050806001600160c01b03165f03610b0a576040516325ec6c1f60e01b815260040160405180910390fd5b89898560ff16818110610b1f57610b1f6118fb565b60016001600160c01b038516919093013560f81c1c82169091039050610c4a57856001600160a01b031663dd9846b9898481518110610b6057610b606118fb565b60200260200101518c8c8860ff16818110610b7d57610b7d6118fb565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8e166044820152606401602060405180830381865afa158015610bd1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf59190611b1a565b85606001518560ff1681518110610c0e57610c0e6118fb565b60200260200101518481518110610c2757610c276118fb565b63ffffffff9092166020928302919091019091015282610c4681611b49565b9350505b50600101610a1a565b505f816001600160401b03811115610c6d57610c6d611279565b604051908082528060200260200182016040528015610c96578160200160208202803683370190505b5090505f5b82811015610d0c5784606001518460ff1681518110610cbc57610cbc6118fb565b60200260200101518181518110610cd557610cd56118fb565b6020026020010151828281518110610cef57610cef6118fb565b63ffffffff90921660209283029190910190910152600101610c9b565b508084606001518460ff1681518110610d2757610d276118fb565b602002602001018190525050508080610d3f90611b61565b9150506109a4565b505f886001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da99190611926565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610ddc908a908a908d90600401611b7f565b5f60405180830381865afa158015610df6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e1d9190810190611a15565b602083015250979650505050505050565b60605f846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610e5f9291906119f7565b5f60405180830381865afa158015610e79573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea09190810190611a15565b90505f84516001600160401b03811115610ebc57610ebc611279565b604051908082528060200260200182016040528015610ee5578160200160208202803683370190505b5090505f5b8551811015610fd957866001600160a01b03166304ec6351878381518110610f1457610f146118fb565b602002602001015187868581518110610f2f57610f2f6118fb565b60200260200101516040518463ffffffff1660e01b8152600401610f6c9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610f87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fab9190611af4565b6001600160c01b0316828281518110610fc657610fc66118fb565b6020908102919091010152600101610eea565b5095945050505050565b6040805160018082528183019092525f9160609183916020808301908036833701905050905084815f8151811061101c5761101c6118fb565b60209081029190910101526040516361c8a12f60e11b81525f906001600160a01b0388169063c391425e9061105790889086906004016119f7565b5f60405180830381865afa158015611071573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110989190810190611a15565b5f815181106110a9576110a96118fb565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291505f906001600160a01b038916906304ec635190606401602060405180830381865afa158015611112573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111369190611af4565b6001600160c01b031690505f61114b82611169565b9050816111598a838a61023f565b9550955050505050935093915050565b60605f5f61117684611232565b61ffff166001600160401b0381111561119157611191611279565b6040519080825280601f01601f1916602001820160405280156111bb576020820181803683370190505b5090505f805b8251821080156111d2575061010081105b15611228576001811b935085841615611218578060f81b8383815181106111fb576111fb6118fb565b60200101906001600160f81b03191690815f1a9053508160010191505b61122181611b49565b90506111c1565b5090949350505050565b5f805b821561125c57611246600184611ba8565b909216918061125481611bbb565b915050611235565b92915050565b6001600160a01b0381168114611276575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b5576112b5611279565b604052919050565b5f6001600160401b038211156112d5576112d5611279565b5060051b60200190565b5f5f604083850312156112f0575f5ffd5b82356112fb81611262565b915060208301356001600160401b03811115611315575f5ffd5b8301601f81018513611325575f5ffd5b8035611338611333826112bd565b61128d565b8082825260208201915060208360051b850101925087831115611359575f5ffd5b6020840193505b8284101561138457833561137381611262565b825260209384019390910190611360565b809450505050509250929050565b5f8151808452602084019350602083015f5b828110156113c25781518652602095860195909101906001016113a4565b5093949350505050565b602081525f6113de6020830184611392565b9392505050565b63ffffffff81168114611276575f5ffd5b8035611401816113e5565b919050565b5f5f5f60608486031215611418575f5ffd5b833561142381611262565b925060208401356001600160401b0381111561143d575f5ffd5b8401601f8101861361144d575f5ffd5b80356001600160401b0381111561146657611466611279565b611479601f8201601f191660200161128d565b81815287602083850101111561148d575f5ffd5b816020840160208301375f602083830101528094505050506114b1604085016113f6565b90509250925092565b5f82825180855260208501945060208160051b830101602085015f5b8381101561155b57848303601f19018852815180518085526020918201918501905f5b8181101561154257835180516001600160a01b03168452602080820151818601526040918201516001600160601b031691850191909152909301926060909201916001016114f9565b50506020998a01999094509290920191506001016114d6565b50909695505050505050565b602081525f6113de60208301846114ba565b5f82601f830112611588575f5ffd5b8135611596611333826112bd565b8082825260208201915060208360051b8601019250858311156115b7575f5ffd5b602085015b83811015610fd95780358352602092830192016115bc565b5f5f604083850312156115e5575f5ffd5b82356115f081611262565b915060208301356001600160401b0381111561160a575f5ffd5b61161685828601611579565b9150509250929050565b602080825282518282018190525f918401906040840190835b818110156116605783516001600160a01b0316835260209384019390920191600101611639565b509095945050505050565b5f5f5f5f5f6080868803121561167f575f5ffd5b853561168a81611262565b9450602086013561169a816113e5565b935060408601356001600160401b038111156116b4575f5ffd5b8601601f810188136116c4575f5ffd5b80356001600160401b038111156116d9575f5ffd5b8860208284010111156116ea575f5ffd5b6020919091019350915060608601356001600160401b0381111561170c575f5ffd5b61171888828901611579565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156113c257815163ffffffff16865260209586019590910190600101611737565b602081525f82516080602084015261177660a0840182611725565b90506020840151601f198483030160408501526117938282611725565b9150506040840151601f198483030160608501526117b18282611725565b6060860151858203601f190160808701528051808352919350602090810192508084019190600582901b8501015f5b8281101561069b57601f198683030184526117fc828651611725565b602095860195949094019391506001016117e0565b5f5f5f60608486031215611823575f5ffd5b833561182e81611262565b925060208401356001600160401b03811115611848575f5ffd5b61185486828701611579565b9250506040840135611865816113e5565b809150509250925092565b602080825282518282018190525f918401906040840190835b81811015611660578351835260209384019390920191600101611889565b5f5f5f606084860312156118b9575f5ffd5b83356118c481611262565b9250602084013591506040840135611865816113e5565b828152604060208201525f6118f360408301846114ba565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561191f575f5ffd5b5051919050565b5f60208284031215611936575f5ffd5b81516113de81611262565b5f60208284031215611951575f5ffd5b81516001600160401b03811115611966575f5ffd5b8201601f81018413611976575f5ffd5b8051611984611333826112bd565b8082825260208201915060208360051b8501019250868311156119a5575f5ffd5b6020840193505b828410156119c75783518252602093840193909101906119ac565b9695505050505050565b5f602082840312156119e1575f5ffd5b81516001600160601b03811681146113de575f5ffd5b63ffffffff83168152604060208201525f6118f36040830184611392565b5f60208284031215611a25575f5ffd5b81516001600160401b03811115611a3a575f5ffd5b8201601f81018413611a4a575f5ffd5b8051611a58611333826112bd565b8082825260208201915060208360051b850101925086831115611a79575f5ffd5b6020840193505b828410156119c7578351611a93816113e5565b825260209384019390910190611a80565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201525f611aeb604083018486611aa4565b95945050505050565b5f60208284031215611b04575f5ffd5b81516001600160c01b03811681146113de575f5ffd5b5f60208284031215611b2a575f5ffd5b81516113de816113e5565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611b5a57611b5a611b35565b5060010190565b5f60ff821660ff8103611b7657611b76611b35565b60010192915050565b604081525f611b92604083018587611aa4565b905063ffffffff83166020830152949350505050565b8181038181111561125c5761125c611b35565b5f61ffff821661ffff8103611b7657611b76611b3556fea2646970667358221220492b3f60926e46ade5551f3fadaa07714d4d8eab2ce50f89a4a14a00b13a3ac164736f6c634300081b0033
283    /// ```
284    #[rustfmt::skip]
285    #[allow(clippy::all)]
286    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
287        b"`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x1C\x08\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0`W_5`\xE0\x1C\x80c1\xB3k\xD9\x14a\0dW\x80c5c\xB0\xD1\x14a\0\x8DW\x80cM+W\xFE\x14a\0\xADW\x80cOs\x9Ft\x14a\0\xCDW\x80c\\\x15Vb\x14a\0\xEDW\x80c\xCE\xFD\xC1\xD4\x14a\x01\rW[__\xFD[a\0wa\0r6`\x04a\x12\xDFV[a\x01.V[`@Qa\0\x84\x91\x90a\x13\xCCV[`@Q\x80\x91\x03\x90\xF3[a\0\xA0a\0\x9B6`\x04a\x14\x06V[a\x02?V[`@Qa\0\x84\x91\x90a\x15gV[a\0\xC0a\0\xBB6`\x04a\x15\xD4V[a\x06\xA7V[`@Qa\0\x84\x91\x90a\x16 V[a\0\xE0a\0\xDB6`\x04a\x16kV[a\x07\xB1V[`@Qa\0\x84\x91\x90a\x17[V[a\x01\0a\0\xFB6`\x04a\x18\x11V[a\x0E.V[`@Qa\0\x84\x91\x90a\x18pV[a\x01 a\x01\x1B6`\x04a\x18\xA7V[a\x0F\xE3V[`@Qa\0\x84\x92\x91\x90a\x18\xDBV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01IWa\x01Ia\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01rW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82Q\x81\x10\x15a\x028W\x83`\x01`\x01`\xA0\x1B\x03\x16c\x13T*N\x84\x83\x81Q\x81\x10a\x01\xA1Wa\x01\xA1a\x18\xFBV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xD4\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x13\x91\x90a\x19\x0FV[\x82\x82\x81Q\x81\x10a\x02%Wa\x02%a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x01wV[P\x92\x91PPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02~W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA2\x91\x90a\x19&V[\x90P_\x85`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x99#\xC2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xE1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x05\x91\x90a\x19&V[\x90P_\x86`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03DW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03h\x91\x90a\x19&V[\x90P_\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x84Wa\x03\x84a\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03\xB7W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x03\xA2W\x90P[P\x90P_[\x87Q\x81\x10\x15a\x06\x9BW_\x88\x82\x81Q\x81\x10a\x03\xD8Wa\x03\xD8a\x18\xFBV[\x01` \x01Q`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90Rc\xFF\xFF\xFF\xFF\x8A\x16`$\x83\x01R\x91P_\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x045W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04\\\x91\x90\x81\x01\x90a\x19AV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04wWa\x04wa\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xC0W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x04\x95W\x90P[P\x84\x84\x81Q\x81\x10a\x04\xD3Wa\x04\xD3a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x81Q\x81\x10\x15a\x06\x90W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x05\x15Wa\x05\x15a\x18\xFBV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05;\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05z\x91\x90a\x19&V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x05\x9AWa\x05\x9Aa\x18\xFBV[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x05\xC8Wa\x05\xC8a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\"W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06F\x91\x90a\x19\xD1V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x06dWa\x06da\x18\xFBV[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x06}Wa\x06}a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\xE0V[PPP`\x01\x01a\x03\xBCV[P\x97\x96PPPPPPPV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xC2Wa\x06\xC2a\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06\xEBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82Q\x81\x10\x15a\x028W\x83`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x84\x83\x81Q\x81\x10a\x07\x1AWa\x07\x1Aa\x18\xFBV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07@\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07[W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x7F\x91\x90a\x19&V[\x82\x82\x81Q\x81\x10a\x07\x91Wa\x07\x91a\x18\xFBV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x06\xF0V[a\x07\xDC`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_\x86`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08=\x91\x90a\x19&V[\x90Pa\x08j`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\xC3\x91B^\x90a\x08\x98\x90\x8A\x90\x88\x90`\x04\x01a\x19\xF7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xB2W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08\xD9\x91\x90\x81\x01\x90a\x1A\x15V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\t\x0B\x90\x8A\x90\x8A\x90\x8A\x90`\x04\x01a\x1A\xCCV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t%W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\tL\x91\x90\x81\x01\x90a\x1A\x15V[`@\x82\x01R\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\tiWa\tia\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x9CW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x87W\x90P[P``\x82\x01R_[`\xFF\x81\x16\x86\x11\x15a\rGW\x84Q_\x90`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xCAWa\t\xCAa\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xF3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\n\rWa\n\ra\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x86Q\x81\x10\x15a\x0CSW_\x8B`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x89\x84\x81Q\x81\x10a\nEWa\nEa\x18\xFBV[` \x02` \x01\x01Q\x8D\x88_\x01Q\x86\x81Q\x81\x10a\ncWa\nca\x18\xFBV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xA0\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xDF\x91\x90a\x1A\xF4V[\x90P\x80`\x01`\x01`\xC0\x1B\x03\x16_\x03a\x0B\nW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x89\x89\x85`\xFF\x16\x81\x81\x10a\x0B\x1FWa\x0B\x1Fa\x18\xFBV[`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x91\x90\x93\x015`\xF8\x1C\x1C\x82\x16\x90\x91\x03\x90Pa\x0CJW\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x89\x84\x81Q\x81\x10a\x0B`Wa\x0B`a\x18\xFBV[` \x02` \x01\x01Q\x8C\x8C\x88`\xFF\x16\x81\x81\x10a\x0B}Wa\x0B}a\x18\xFBV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x04\x81\x01\x94\x90\x94R\x91\x90\x91\x015`\xF8\x1C`$\x83\x01RPc\xFF\xFF\xFF\xFF\x8E\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xD1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xF5\x91\x90a\x1B\x1AV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea\x18\xFBV[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\x0C'Wa\x0C'a\x18\xFBV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\x0CF\x81a\x1BIV[\x93PP[P`\x01\x01a\n\x1AV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0CmWa\x0Cma\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\x96W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\r\x0CW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa\x18\xFBV[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0C\xD5Wa\x0C\xD5a\x18\xFBV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0C\xEFWa\x0C\xEFa\x18\xFBV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x0C\x9BV[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\r'Wa\r'a\x18\xFBV[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\r?\x90a\x1BaV[\x91PPa\t\xA4V[P_\x88`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x85W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xA9\x91\x90a\x19&V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\r\xDC\x90\x8A\x90\x8A\x90\x8D\x90`\x04\x01a\x1B\x7FV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xF6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\x1D\x91\x90\x81\x01\x90a\x1A\x15V[` \x83\x01RP\x97\x96PPPPPPPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E_\x92\x91\x90a\x19\xF7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EyW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xA0\x91\x90\x81\x01\x90a\x1A\x15V[\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0E\xBCWa\x0E\xBCa\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xE5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85Q\x81\x10\x15a\x0F\xD9W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\x0F\x14Wa\x0F\x14a\x18\xFBV[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\x0F/Wa\x0F/a\x18\xFBV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Fl\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xAB\x91\x90a\x1A\xF4V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0F\xC6Wa\x0F\xC6a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xEAV[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81_\x81Q\x81\x10a\x10\x1CWa\x10\x1Ca\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x10W\x90\x88\x90\x86\x90`\x04\x01a\x19\xF7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10qW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\x98\x91\x90\x81\x01\x90a\x1A\x15V[_\x81Q\x81\x10a\x10\xA9Wa\x10\xA9a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x88\x90Rc\xFF\xFF\xFF\xFF\x87\x81\x16`$\x83\x01R\x90\x91\x16`D\x82\x01\x81\x90R\x91P_\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x12W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x116\x91\x90a\x1A\xF4V[`\x01`\x01`\xC0\x1B\x03\x16\x90P_a\x11K\x82a\x11iV[\x90P\x81a\x11Y\x8A\x83\x8Aa\x02?V[\x95P\x95PPPPP\x93P\x93\x91PPV[``__a\x11v\x84a\x122V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\x91Wa\x11\x91a\x12yV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x11\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x11\xD2WPa\x01\0\x81\x10[\x15a\x12(W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x12\x18W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x11\xFBWa\x11\xFBa\x18\xFBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x12!\x81a\x1BIV[\x90Pa\x11\xC1V[P\x90\x94\x93PPPPV[_\x80[\x82\x15a\x12\\Wa\x12F`\x01\x84a\x1B\xA8V[\x90\x92\x16\x91\x80a\x12T\x81a\x1B\xBBV[\x91PPa\x125V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x12vW__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB5Wa\x12\xB5a\x12yV[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a\x12\xD5Wa\x12\xD5a\x12yV[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a\x12\xF0W__\xFD[\x825a\x12\xFB\x81a\x12bV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x15W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x13%W__\xFD[\x805a\x138a\x133\x82a\x12\xBDV[a\x12\x8DV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a\x13YW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x13\x84W\x835a\x13s\x81a\x12bV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x13`V[\x80\x94PPPPP\x92P\x92\x90PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xC2W\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x13\xA4V[P\x93\x94\x93PPPPV[` \x81R_a\x13\xDE` \x83\x01\x84a\x13\x92V[\x93\x92PPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x12vW__\xFD[\x805a\x14\x01\x81a\x13\xE5V[\x91\x90PV[___``\x84\x86\x03\x12\x15a\x14\x18W__\xFD[\x835a\x14#\x81a\x12bV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14=W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14MW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14fWa\x14fa\x12yV[a\x14y`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x8DV[\x81\x81R\x87` \x83\x85\x01\x01\x11\x15a\x14\x8DW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x94PPPPa\x14\xB1`@\x85\x01a\x13\xF6V[\x90P\x92P\x92P\x92V[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\x15[W\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\x15BW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x80\x82\x01Q\x81\x86\x01R`@\x91\x82\x01Q`\x01`\x01``\x1B\x03\x16\x91\x85\x01\x91\x90\x91R\x90\x93\x01\x92``\x90\x92\x01\x91`\x01\x01a\x14\xF9V[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\x14\xD6V[P\x90\x96\x95PPPPPPV[` \x81R_a\x13\xDE` \x83\x01\x84a\x14\xBAV[_\x82`\x1F\x83\x01\x12a\x15\x88W__\xFD[\x815a\x15\x96a\x133\x82a\x12\xBDV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a\x15\xB7W__\xFD[` \x85\x01[\x83\x81\x10\x15a\x0F\xD9W\x805\x83R` \x92\x83\x01\x92\x01a\x15\xBCV[__`@\x83\x85\x03\x12\x15a\x15\xE5W__\xFD[\x825a\x15\xF0\x81a\x12bV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\nW__\xFD[a\x16\x16\x85\x82\x86\x01a\x15yV[\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x16`W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x169V[P\x90\x95\x94PPPPPV[_____`\x80\x86\x88\x03\x12\x15a\x16\x7FW__\xFD[\x855a\x16\x8A\x81a\x12bV[\x94P` \x86\x015a\x16\x9A\x81a\x13\xE5V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xB4W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a\x16\xC4W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xD9W__\xFD[\x88` \x82\x84\x01\x01\x11\x15a\x16\xEAW__\xFD[` \x91\x90\x91\x01\x93P\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\x0CW__\xFD[a\x17\x18\x88\x82\x89\x01a\x15yV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xC2W\x81Qc\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x177V[` \x81R_\x82Q`\x80` \x84\x01Ra\x17v`\xA0\x84\x01\x82a\x17%V[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x93\x82\x82a\x17%V[\x91PP`@\x84\x01Q`\x1F\x19\x84\x83\x03\x01``\x85\x01Ra\x17\xB1\x82\x82a\x17%V[``\x86\x01Q\x85\x82\x03`\x1F\x19\x01`\x80\x87\x01R\x80Q\x80\x83R\x91\x93P` \x90\x81\x01\x92P\x80\x84\x01\x91\x90`\x05\x82\x90\x1B\x85\x01\x01_[\x82\x81\x10\x15a\x06\x9BW`\x1F\x19\x86\x83\x03\x01\x84Ra\x17\xFC\x82\x86Qa\x17%V[` \x95\x86\x01\x95\x94\x90\x94\x01\x93\x91P`\x01\x01a\x17\xE0V[___``\x84\x86\x03\x12\x15a\x18#W__\xFD[\x835a\x18.\x81a\x12bV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18HW__\xFD[a\x18T\x86\x82\x87\x01a\x15yV[\x92PP`@\x84\x015a\x18e\x81a\x13\xE5V[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x16`W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x18\x89V[___``\x84\x86\x03\x12\x15a\x18\xB9W__\xFD[\x835a\x18\xC4\x81a\x12bV[\x92P` \x84\x015\x91P`@\x84\x015a\x18e\x81a\x13\xE5V[\x82\x81R`@` \x82\x01R_a\x18\xF3`@\x83\x01\x84a\x14\xBAV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x19\x1FW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x196W__\xFD[\x81Qa\x13\xDE\x81a\x12bV[_` \x82\x84\x03\x12\x15a\x19QW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19fW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x19vW__\xFD[\x80Qa\x19\x84a\x133\x82a\x12\xBDV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x19\xA5W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x19\xC7W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x19\xACV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x19\xE1W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x13\xDEW__\xFD[c\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x18\xF3`@\x83\x01\x84a\x13\x92V[_` \x82\x84\x03\x12\x15a\x1A%W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1A:W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x1AJW__\xFD[\x80Qa\x1AXa\x133\x82a\x12\xBDV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x1AyW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x19\xC7W\x83Qa\x1A\x93\x81a\x13\xE5V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x1A\x80V[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R_a\x1A\xEB`@\x83\x01\x84\x86a\x1A\xA4V[\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a\x1B\x04W__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x13\xDEW__\xFD[_` \x82\x84\x03\x12\x15a\x1B*W__\xFD[\x81Qa\x13\xDE\x81a\x13\xE5V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_`\x01\x82\x01a\x1BZWa\x1BZa\x1B5V[P`\x01\x01\x90V[_`\xFF\x82\x16`\xFF\x81\x03a\x1BvWa\x1Bva\x1B5V[`\x01\x01\x92\x91PPV[`@\x81R_a\x1B\x92`@\x83\x01\x85\x87a\x1A\xA4V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x12\\Wa\x12\\a\x1B5V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a\x1BvWa\x1Bva\x1B5V\xFE\xA2dipfsX\"\x12 I+?`\x92nF\xAD\xE5U\x1F?\xAD\xAA\x07qMM\x8E\xAB,\xE5\x0F\x89\xA4\xA1J\0\xB1::\xC1dsolcC\0\x08\x1B\x003",
288    );
289    /// The runtime bytecode of the contract, as deployed on the network.
290    ///
291    /// ```text
292    ///0x608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806331b36bd9146100645780633563b0d11461008d5780634d2b57fe146100ad5780634f739f74146100cd5780635c155662146100ed578063cefdc1d41461010d575b5f5ffd5b6100776100723660046112df565b61012e565b60405161008491906113cc565b60405180910390f35b6100a061009b366004611406565b61023f565b6040516100849190611567565b6100c06100bb3660046115d4565b6106a7565b6040516100849190611620565b6100e06100db36600461166b565b6107b1565b604051610084919061175b565b6101006100fb366004611811565b610e2e565b6040516100849190611870565b61012061011b3660046118a7565b610fe3565b6040516100849291906118db565b606081516001600160401b0381111561014957610149611279565b604051908082528060200260200182016040528015610172578160200160208202803683370190505b5090505f5b825181101561023857836001600160a01b03166313542a4e8483815181106101a1576101a16118fb565b60200260200101516040518263ffffffff1660e01b81526004016101d491906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610213919061190f565b828281518110610225576102256118fb565b6020908102919091010152600101610177565b5092915050565b60605f846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a29190611926565b90505f856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103059190611926565b90505f866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610344573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103689190611926565b90505f86516001600160401b0381111561038457610384611279565b6040519080825280602002602001820160405280156103b757816020015b60608152602001906001900390816103a25790505b5090505f5b875181101561069b575f8882815181106103d8576103d86118fb565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291505f906001600160a01b038716906389026245906044015f60405180830381865afa158015610435573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261045c9190810190611941565b905080516001600160401b0381111561047757610477611279565b6040519080825280602002602001820160405280156104c057816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816104955790505b508484815181106104d3576104d36118fb565b60209081029190910101525f5b8151811015610690576040518060600160405280876001600160a01b03166347b314e8858581518110610515576105156118fb565b60200260200101516040518263ffffffff1660e01b815260040161053b91815260200190565b602060405180830381865afa158015610556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057a9190611926565b6001600160a01b0316815260200183838151811061059a5761059a6118fb565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105c8576105c86118fb565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064691906119d1565b6001600160601b0316815250858581518110610664576106646118fb565b6020026020010151828151811061067d5761067d6118fb565b60209081029190910101526001016104e0565b5050506001016103bc565b50979650505050505050565b606081516001600160401b038111156106c2576106c2611279565b6040519080825280602002602001820160405280156106eb578160200160208202803683370190505b5090505f5b825181101561023857836001600160a01b031663296bb06484838151811061071a5761071a6118fb565b60200260200101516040518263ffffffff1660e01b815260040161074091815260200190565b602060405180830381865afa15801561075b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077f9190611926565b828281518110610791576107916118fb565b6001600160a01b03909216602092830291909101909101526001016106f0565b6107dc6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f866001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610819573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190611926565b905061086a6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b0389169063c391425e90610898908a9088906004016119f7565b5f60405180830381865afa1580156108b2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108d99190810190611a15565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061090b908a908a908a90600401611acc565b5f60405180830381865afa158015610925573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261094c9190810190611a15565b6040820152846001600160401b0381111561096957610969611279565b60405190808252806020026020018201604052801561099c57816020015b60608152602001906001900390816109875790505b5060608201525f5b60ff8116861115610d475784515f906001600160401b038111156109ca576109ca611279565b6040519080825280602002602001820160405280156109f3578160200160208202803683370190505b5083606001518360ff1681518110610a0d57610a0d6118fb565b60209081029190910101525f5b8651811015610c53575f8b6001600160a01b03166304ec6351898481518110610a4557610a456118fb565b60200260200101518d885f01518681518110610a6357610a636118fb565b60200260200101516040518463ffffffff1660e01b8152600401610aa09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610abb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adf9190611af4565b9050806001600160c01b03165f03610b0a576040516325ec6c1f60e01b815260040160405180910390fd5b89898560ff16818110610b1f57610b1f6118fb565b60016001600160c01b038516919093013560f81c1c82169091039050610c4a57856001600160a01b031663dd9846b9898481518110610b6057610b606118fb565b60200260200101518c8c8860ff16818110610b7d57610b7d6118fb565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8e166044820152606401602060405180830381865afa158015610bd1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf59190611b1a565b85606001518560ff1681518110610c0e57610c0e6118fb565b60200260200101518481518110610c2757610c276118fb565b63ffffffff9092166020928302919091019091015282610c4681611b49565b9350505b50600101610a1a565b505f816001600160401b03811115610c6d57610c6d611279565b604051908082528060200260200182016040528015610c96578160200160208202803683370190505b5090505f5b82811015610d0c5784606001518460ff1681518110610cbc57610cbc6118fb565b60200260200101518181518110610cd557610cd56118fb565b6020026020010151828281518110610cef57610cef6118fb565b63ffffffff90921660209283029190910190910152600101610c9b565b508084606001518460ff1681518110610d2757610d276118fb565b602002602001018190525050508080610d3f90611b61565b9150506109a4565b505f886001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da99190611926565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610ddc908a908a908d90600401611b7f565b5f60405180830381865afa158015610df6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e1d9190810190611a15565b602083015250979650505050505050565b60605f846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610e5f9291906119f7565b5f60405180830381865afa158015610e79573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea09190810190611a15565b90505f84516001600160401b03811115610ebc57610ebc611279565b604051908082528060200260200182016040528015610ee5578160200160208202803683370190505b5090505f5b8551811015610fd957866001600160a01b03166304ec6351878381518110610f1457610f146118fb565b602002602001015187868581518110610f2f57610f2f6118fb565b60200260200101516040518463ffffffff1660e01b8152600401610f6c9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610f87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fab9190611af4565b6001600160c01b0316828281518110610fc657610fc66118fb565b6020908102919091010152600101610eea565b5095945050505050565b6040805160018082528183019092525f9160609183916020808301908036833701905050905084815f8151811061101c5761101c6118fb565b60209081029190910101526040516361c8a12f60e11b81525f906001600160a01b0388169063c391425e9061105790889086906004016119f7565b5f60405180830381865afa158015611071573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110989190810190611a15565b5f815181106110a9576110a96118fb565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291505f906001600160a01b038916906304ec635190606401602060405180830381865afa158015611112573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111369190611af4565b6001600160c01b031690505f61114b82611169565b9050816111598a838a61023f565b9550955050505050935093915050565b60605f5f61117684611232565b61ffff166001600160401b0381111561119157611191611279565b6040519080825280601f01601f1916602001820160405280156111bb576020820181803683370190505b5090505f805b8251821080156111d2575061010081105b15611228576001811b935085841615611218578060f81b8383815181106111fb576111fb6118fb565b60200101906001600160f81b03191690815f1a9053508160010191505b61122181611b49565b90506111c1565b5090949350505050565b5f805b821561125c57611246600184611ba8565b909216918061125481611bbb565b915050611235565b92915050565b6001600160a01b0381168114611276575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b5576112b5611279565b604052919050565b5f6001600160401b038211156112d5576112d5611279565b5060051b60200190565b5f5f604083850312156112f0575f5ffd5b82356112fb81611262565b915060208301356001600160401b03811115611315575f5ffd5b8301601f81018513611325575f5ffd5b8035611338611333826112bd565b61128d565b8082825260208201915060208360051b850101925087831115611359575f5ffd5b6020840193505b8284101561138457833561137381611262565b825260209384019390910190611360565b809450505050509250929050565b5f8151808452602084019350602083015f5b828110156113c25781518652602095860195909101906001016113a4565b5093949350505050565b602081525f6113de6020830184611392565b9392505050565b63ffffffff81168114611276575f5ffd5b8035611401816113e5565b919050565b5f5f5f60608486031215611418575f5ffd5b833561142381611262565b925060208401356001600160401b0381111561143d575f5ffd5b8401601f8101861361144d575f5ffd5b80356001600160401b0381111561146657611466611279565b611479601f8201601f191660200161128d565b81815287602083850101111561148d575f5ffd5b816020840160208301375f602083830101528094505050506114b1604085016113f6565b90509250925092565b5f82825180855260208501945060208160051b830101602085015f5b8381101561155b57848303601f19018852815180518085526020918201918501905f5b8181101561154257835180516001600160a01b03168452602080820151818601526040918201516001600160601b031691850191909152909301926060909201916001016114f9565b50506020998a01999094509290920191506001016114d6565b50909695505050505050565b602081525f6113de60208301846114ba565b5f82601f830112611588575f5ffd5b8135611596611333826112bd565b8082825260208201915060208360051b8601019250858311156115b7575f5ffd5b602085015b83811015610fd95780358352602092830192016115bc565b5f5f604083850312156115e5575f5ffd5b82356115f081611262565b915060208301356001600160401b0381111561160a575f5ffd5b61161685828601611579565b9150509250929050565b602080825282518282018190525f918401906040840190835b818110156116605783516001600160a01b0316835260209384019390920191600101611639565b509095945050505050565b5f5f5f5f5f6080868803121561167f575f5ffd5b853561168a81611262565b9450602086013561169a816113e5565b935060408601356001600160401b038111156116b4575f5ffd5b8601601f810188136116c4575f5ffd5b80356001600160401b038111156116d9575f5ffd5b8860208284010111156116ea575f5ffd5b6020919091019350915060608601356001600160401b0381111561170c575f5ffd5b61171888828901611579565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156113c257815163ffffffff16865260209586019590910190600101611737565b602081525f82516080602084015261177660a0840182611725565b90506020840151601f198483030160408501526117938282611725565b9150506040840151601f198483030160608501526117b18282611725565b6060860151858203601f190160808701528051808352919350602090810192508084019190600582901b8501015f5b8281101561069b57601f198683030184526117fc828651611725565b602095860195949094019391506001016117e0565b5f5f5f60608486031215611823575f5ffd5b833561182e81611262565b925060208401356001600160401b03811115611848575f5ffd5b61185486828701611579565b9250506040840135611865816113e5565b809150509250925092565b602080825282518282018190525f918401906040840190835b81811015611660578351835260209384019390920191600101611889565b5f5f5f606084860312156118b9575f5ffd5b83356118c481611262565b9250602084013591506040840135611865816113e5565b828152604060208201525f6118f360408301846114ba565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561191f575f5ffd5b5051919050565b5f60208284031215611936575f5ffd5b81516113de81611262565b5f60208284031215611951575f5ffd5b81516001600160401b03811115611966575f5ffd5b8201601f81018413611976575f5ffd5b8051611984611333826112bd565b8082825260208201915060208360051b8501019250868311156119a5575f5ffd5b6020840193505b828410156119c75783518252602093840193909101906119ac565b9695505050505050565b5f602082840312156119e1575f5ffd5b81516001600160601b03811681146113de575f5ffd5b63ffffffff83168152604060208201525f6118f36040830184611392565b5f60208284031215611a25575f5ffd5b81516001600160401b03811115611a3a575f5ffd5b8201601f81018413611a4a575f5ffd5b8051611a58611333826112bd565b8082825260208201915060208360051b850101925086831115611a79575f5ffd5b6020840193505b828410156119c7578351611a93816113e5565b825260209384019390910190611a80565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201525f611aeb604083018486611aa4565b95945050505050565b5f60208284031215611b04575f5ffd5b81516001600160c01b03811681146113de575f5ffd5b5f60208284031215611b2a575f5ffd5b81516113de816113e5565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611b5a57611b5a611b35565b5060010190565b5f60ff821660ff8103611b7657611b76611b35565b60010192915050565b604081525f611b92604083018587611aa4565b905063ffffffff83166020830152949350505050565b8181038181111561125c5761125c611b35565b5f61ffff821661ffff8103611b7657611b76611b3556fea2646970667358221220492b3f60926e46ade5551f3fadaa07714d4d8eab2ce50f89a4a14a00b13a3ac164736f6c634300081b0033
293    /// ```
294    #[rustfmt::skip]
295    #[allow(clippy::all)]
296    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
297        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0`W_5`\xE0\x1C\x80c1\xB3k\xD9\x14a\0dW\x80c5c\xB0\xD1\x14a\0\x8DW\x80cM+W\xFE\x14a\0\xADW\x80cOs\x9Ft\x14a\0\xCDW\x80c\\\x15Vb\x14a\0\xEDW\x80c\xCE\xFD\xC1\xD4\x14a\x01\rW[__\xFD[a\0wa\0r6`\x04a\x12\xDFV[a\x01.V[`@Qa\0\x84\x91\x90a\x13\xCCV[`@Q\x80\x91\x03\x90\xF3[a\0\xA0a\0\x9B6`\x04a\x14\x06V[a\x02?V[`@Qa\0\x84\x91\x90a\x15gV[a\0\xC0a\0\xBB6`\x04a\x15\xD4V[a\x06\xA7V[`@Qa\0\x84\x91\x90a\x16 V[a\0\xE0a\0\xDB6`\x04a\x16kV[a\x07\xB1V[`@Qa\0\x84\x91\x90a\x17[V[a\x01\0a\0\xFB6`\x04a\x18\x11V[a\x0E.V[`@Qa\0\x84\x91\x90a\x18pV[a\x01 a\x01\x1B6`\x04a\x18\xA7V[a\x0F\xE3V[`@Qa\0\x84\x92\x91\x90a\x18\xDBV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x01IWa\x01Ia\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01rW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82Q\x81\x10\x15a\x028W\x83`\x01`\x01`\xA0\x1B\x03\x16c\x13T*N\x84\x83\x81Q\x81\x10a\x01\xA1Wa\x01\xA1a\x18\xFBV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x01\xD4\x91\x90`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xEFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x13\x91\x90a\x19\x0FV[\x82\x82\x81Q\x81\x10a\x02%Wa\x02%a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x01wV[P\x92\x91PPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02~W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xA2\x91\x90a\x19&V[\x90P_\x85`\x01`\x01`\xA0\x1B\x03\x16c\x9E\x99#\xC2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xE1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x05\x91\x90a\x19&V[\x90P_\x86`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03DW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03h\x91\x90a\x19&V[\x90P_\x86Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03\x84Wa\x03\x84a\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x03\xB7W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x03\xA2W\x90P[P\x90P_[\x87Q\x81\x10\x15a\x06\x9BW_\x88\x82\x81Q\x81\x10a\x03\xD8Wa\x03\xD8a\x18\xFBV[\x01` \x01Q`@Qc\x89\x02bE`\xE0\x1B\x81R`\xF8\x91\x90\x91\x1C`\x04\x82\x01\x81\x90Rc\xFF\xFF\xFF\xFF\x8A\x16`$\x83\x01R\x91P_\x90`\x01`\x01`\xA0\x1B\x03\x87\x16\x90c\x89\x02bE\x90`D\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x045W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x04\\\x91\x90\x81\x01\x90a\x19AV[\x90P\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04wWa\x04wa\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xC0W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R_\x19\x90\x92\x01\x91\x01\x81a\x04\x95W\x90P[P\x84\x84\x81Q\x81\x10a\x04\xD3Wa\x04\xD3a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x81Q\x81\x10\x15a\x06\x90W`@Q\x80``\x01`@R\x80\x87`\x01`\x01`\xA0\x1B\x03\x16cG\xB3\x14\xE8\x85\x85\x81Q\x81\x10a\x05\x15Wa\x05\x15a\x18\xFBV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x05;\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05z\x91\x90a\x19&V[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x83\x83\x81Q\x81\x10a\x05\x9AWa\x05\x9Aa\x18\xFBV[` \x02` \x01\x01Q\x81R` \x01\x89`\x01`\x01`\xA0\x1B\x03\x16c\xFA(\xC6'\x85\x85\x81Q\x81\x10a\x05\xC8Wa\x05\xC8a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x84\x90\x1B\x16\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x88\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x8F\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06\"W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06F\x91\x90a\x19\xD1V[`\x01`\x01``\x1B\x03\x16\x81RP\x85\x85\x81Q\x81\x10a\x06dWa\x06da\x18\xFBV[` \x02` \x01\x01Q\x82\x81Q\x81\x10a\x06}Wa\x06}a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\xE0V[PPP`\x01\x01a\x03\xBCV[P\x97\x96PPPPPPPV[``\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x06\xC2Wa\x06\xC2a\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x06\xEBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82Q\x81\x10\x15a\x028W\x83`\x01`\x01`\xA0\x1B\x03\x16c)k\xB0d\x84\x83\x81Q\x81\x10a\x07\x1AWa\x07\x1Aa\x18\xFBV[` \x02` \x01\x01Q`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x07@\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07[W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\x7F\x91\x90a\x19&V[\x82\x82\x81Q\x81\x10a\x07\x91Wa\x07\x91a\x18\xFBV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x06\xF0V[a\x07\xDC`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[_\x86`\x01`\x01`\xA0\x1B\x03\x16ch0H5`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08=\x91\x90a\x19&V[\x90Pa\x08j`@Q\x80`\x80\x01`@R\x80``\x81R` \x01``\x81R` \x01``\x81R` \x01``\x81RP\x90V[`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\xC3\x91B^\x90a\x08\x98\x90\x8A\x90\x88\x90`\x04\x01a\x19\xF7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xB2W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x08\xD9\x91\x90\x81\x01\x90a\x1A\x15V[\x81R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c\x81\xC0u\x02\x90a\t\x0B\x90\x8A\x90\x8A\x90\x8A\x90`\x04\x01a\x1A\xCCV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t%W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\tL\x91\x90\x81\x01\x90a\x1A\x15V[`@\x82\x01R\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\tiWa\tia\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x9CW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\t\x87W\x90P[P``\x82\x01R_[`\xFF\x81\x16\x86\x11\x15a\rGW\x84Q_\x90`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\xCAWa\t\xCAa\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\xF3W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x83``\x01Q\x83`\xFF\x16\x81Q\x81\x10a\n\rWa\n\ra\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R_[\x86Q\x81\x10\x15a\x0CSW_\x8B`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x89\x84\x81Q\x81\x10a\nEWa\nEa\x18\xFBV[` \x02` \x01\x01Q\x8D\x88_\x01Q\x86\x81Q\x81\x10a\ncWa\nca\x18\xFBV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xA0\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xBBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xDF\x91\x90a\x1A\xF4V[\x90P\x80`\x01`\x01`\xC0\x1B\x03\x16_\x03a\x0B\nW`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x89\x89\x85`\xFF\x16\x81\x81\x10a\x0B\x1FWa\x0B\x1Fa\x18\xFBV[`\x01`\x01`\x01`\xC0\x1B\x03\x85\x16\x91\x90\x93\x015`\xF8\x1C\x1C\x82\x16\x90\x91\x03\x90Pa\x0CJW\x85`\x01`\x01`\xA0\x1B\x03\x16c\xDD\x98F\xB9\x89\x84\x81Q\x81\x10a\x0B`Wa\x0B`a\x18\xFBV[` \x02` \x01\x01Q\x8C\x8C\x88`\xFF\x16\x81\x81\x10a\x0B}Wa\x0B}a\x18\xFBV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x87\x90\x1B\x16\x81R`\x04\x81\x01\x94\x90\x94R\x91\x90\x91\x015`\xF8\x1C`$\x83\x01RPc\xFF\xFF\xFF\xFF\x8E\x16`D\x82\x01R`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xD1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xF5\x91\x90a\x1B\x1AV[\x85``\x01Q\x85`\xFF\x16\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea\x18\xFBV[` \x02` \x01\x01Q\x84\x81Q\x81\x10a\x0C'Wa\x0C'a\x18\xFBV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R\x82a\x0CF\x81a\x1BIV[\x93PP[P`\x01\x01a\n\x1AV[P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0CmWa\x0Cma\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\x96W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\r\x0CW\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa\x18\xFBV[` \x02` \x01\x01Q\x81\x81Q\x81\x10a\x0C\xD5Wa\x0C\xD5a\x18\xFBV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0C\xEFWa\x0C\xEFa\x18\xFBV[c\xFF\xFF\xFF\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x0C\x9BV[P\x80\x84``\x01Q\x84`\xFF\x16\x81Q\x81\x10a\r'Wa\r'a\x18\xFBV[` \x02` \x01\x01\x81\x90RPPP\x80\x80a\r?\x90a\x1BaV[\x91PPa\t\xA4V[P_\x88`\x01`\x01`\xA0\x1B\x03\x16c]\xF4YF`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\x85W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xA9\x91\x90a\x19&V[`@Qc5IR\xA3`\xE2\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xD5%J\x8C\x90a\r\xDC\x90\x8A\x90\x8A\x90\x8D\x90`\x04\x01a\x1B\x7FV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xF6W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\x1D\x91\x90\x81\x01\x90a\x1A\x15V[` \x83\x01RP\x97\x96PPPPPPPV[``_\x84`\x01`\x01`\xA0\x1B\x03\x16c\xC3\x91B^\x84\x86`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E_\x92\x91\x90a\x19\xF7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EyW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x0E\xA0\x91\x90\x81\x01\x90a\x1A\x15V[\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0E\xBCWa\x0E\xBCa\x12yV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xE5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85Q\x81\x10\x15a\x0F\xD9W\x86`\x01`\x01`\xA0\x1B\x03\x16c\x04\xECcQ\x87\x83\x81Q\x81\x10a\x0F\x14Wa\x0F\x14a\x18\xFBV[` \x02` \x01\x01Q\x87\x86\x85\x81Q\x81\x10a\x0F/Wa\x0F/a\x18\xFBV[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0Fl\x93\x92\x91\x90\x92\x83Rc\xFF\xFF\xFF\xFF\x91\x82\x16` \x84\x01R\x16`@\x82\x01R``\x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0F\x87W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F\xAB\x91\x90a\x1A\xF4V[`\x01`\x01`\xC0\x1B\x03\x16\x82\x82\x81Q\x81\x10a\x0F\xC6Wa\x0F\xC6a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xEAV[P\x95\x94PPPPPV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91``\x91\x83\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x84\x81_\x81Q\x81\x10a\x10\x1CWa\x10\x1Ca\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x90c\xC3\x91B^\x90a\x10W\x90\x88\x90\x86\x90`\x04\x01a\x19\xF7V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10qW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x10\x98\x91\x90\x81\x01\x90a\x1A\x15V[_\x81Q\x81\x10a\x10\xA9Wa\x10\xA9a\x18\xFBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x88\x90Rc\xFF\xFF\xFF\xFF\x87\x81\x16`$\x83\x01R\x90\x91\x16`D\x82\x01\x81\x90R\x91P_\x90`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\x04\xECcQ\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x12W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x116\x91\x90a\x1A\xF4V[`\x01`\x01`\xC0\x1B\x03\x16\x90P_a\x11K\x82a\x11iV[\x90P\x81a\x11Y\x8A\x83\x8Aa\x02?V[\x95P\x95PPPPP\x93P\x93\x91PPV[``__a\x11v\x84a\x122V[a\xFF\xFF\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\x91Wa\x11\x91a\x12yV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x11\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x80[\x82Q\x82\x10\x80\x15a\x11\xD2WPa\x01\0\x81\x10[\x15a\x12(W`\x01\x81\x1B\x93P\x85\x84\x16\x15a\x12\x18W\x80`\xF8\x1B\x83\x83\x81Q\x81\x10a\x11\xFBWa\x11\xFBa\x18\xFBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP\x81`\x01\x01\x91P[a\x12!\x81a\x1BIV[\x90Pa\x11\xC1V[P\x90\x94\x93PPPPV[_\x80[\x82\x15a\x12\\Wa\x12F`\x01\x84a\x1B\xA8V[\x90\x92\x16\x91\x80a\x12T\x81a\x1B\xBBV[\x91PPa\x125V[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x12vW__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB5Wa\x12\xB5a\x12yV[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a\x12\xD5Wa\x12\xD5a\x12yV[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a\x12\xF0W__\xFD[\x825a\x12\xFB\x81a\x12bV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13\x15W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x13%W__\xFD[\x805a\x138a\x133\x82a\x12\xBDV[a\x12\x8DV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a\x13YW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x13\x84W\x835a\x13s\x81a\x12bV[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x13`V[\x80\x94PPPPP\x92P\x92\x90PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xC2W\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x13\xA4V[P\x93\x94\x93PPPPV[` \x81R_a\x13\xDE` \x83\x01\x84a\x13\x92V[\x93\x92PPPV[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x12vW__\xFD[\x805a\x14\x01\x81a\x13\xE5V[\x91\x90PV[___``\x84\x86\x03\x12\x15a\x14\x18W__\xFD[\x835a\x14#\x81a\x12bV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14=W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x14MW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14fWa\x14fa\x12yV[a\x14y`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x8DV[\x81\x81R\x87` \x83\x85\x01\x01\x11\x15a\x14\x8DW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x94PPPPa\x14\xB1`@\x85\x01a\x13\xF6V[\x90P\x92P\x92P\x92V[_\x82\x82Q\x80\x85R` \x85\x01\x94P` \x81`\x05\x1B\x83\x01\x01` \x85\x01_[\x83\x81\x10\x15a\x15[W\x84\x83\x03`\x1F\x19\x01\x88R\x81Q\x80Q\x80\x85R` \x91\x82\x01\x91\x85\x01\x90_[\x81\x81\x10\x15a\x15BW\x83Q\x80Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x80\x82\x01Q\x81\x86\x01R`@\x91\x82\x01Q`\x01`\x01``\x1B\x03\x16\x91\x85\x01\x91\x90\x91R\x90\x93\x01\x92``\x90\x92\x01\x91`\x01\x01a\x14\xF9V[PP` \x99\x8A\x01\x99\x90\x94P\x92\x90\x92\x01\x91P`\x01\x01a\x14\xD6V[P\x90\x96\x95PPPPPPV[` \x81R_a\x13\xDE` \x83\x01\x84a\x14\xBAV[_\x82`\x1F\x83\x01\x12a\x15\x88W__\xFD[\x815a\x15\x96a\x133\x82a\x12\xBDV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a\x15\xB7W__\xFD[` \x85\x01[\x83\x81\x10\x15a\x0F\xD9W\x805\x83R` \x92\x83\x01\x92\x01a\x15\xBCV[__`@\x83\x85\x03\x12\x15a\x15\xE5W__\xFD[\x825a\x15\xF0\x81a\x12bV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\nW__\xFD[a\x16\x16\x85\x82\x86\x01a\x15yV[\x91PP\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x16`W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x169V[P\x90\x95\x94PPPPPV[_____`\x80\x86\x88\x03\x12\x15a\x16\x7FW__\xFD[\x855a\x16\x8A\x81a\x12bV[\x94P` \x86\x015a\x16\x9A\x81a\x13\xE5V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xB4W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a\x16\xC4W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\xD9W__\xFD[\x88` \x82\x84\x01\x01\x11\x15a\x16\xEAW__\xFD[` \x91\x90\x91\x01\x93P\x91P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\x0CW__\xFD[a\x17\x18\x88\x82\x89\x01a\x15yV[\x91PP\x92\x95P\x92\x95\x90\x93PV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a\x13\xC2W\x81Qc\xFF\xFF\xFF\xFF\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a\x177V[` \x81R_\x82Q`\x80` \x84\x01Ra\x17v`\xA0\x84\x01\x82a\x17%V[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x17\x93\x82\x82a\x17%V[\x91PP`@\x84\x01Q`\x1F\x19\x84\x83\x03\x01``\x85\x01Ra\x17\xB1\x82\x82a\x17%V[``\x86\x01Q\x85\x82\x03`\x1F\x19\x01`\x80\x87\x01R\x80Q\x80\x83R\x91\x93P` \x90\x81\x01\x92P\x80\x84\x01\x91\x90`\x05\x82\x90\x1B\x85\x01\x01_[\x82\x81\x10\x15a\x06\x9BW`\x1F\x19\x86\x83\x03\x01\x84Ra\x17\xFC\x82\x86Qa\x17%V[` \x95\x86\x01\x95\x94\x90\x94\x01\x93\x91P`\x01\x01a\x17\xE0V[___``\x84\x86\x03\x12\x15a\x18#W__\xFD[\x835a\x18.\x81a\x12bV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18HW__\xFD[a\x18T\x86\x82\x87\x01a\x15yV[\x92PP`@\x84\x015a\x18e\x81a\x13\xE5V[\x80\x91PP\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x16`W\x83Q\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x18\x89V[___``\x84\x86\x03\x12\x15a\x18\xB9W__\xFD[\x835a\x18\xC4\x81a\x12bV[\x92P` \x84\x015\x91P`@\x84\x015a\x18e\x81a\x13\xE5V[\x82\x81R`@` \x82\x01R_a\x18\xF3`@\x83\x01\x84a\x14\xBAV[\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x19\x1FW__\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x196W__\xFD[\x81Qa\x13\xDE\x81a\x12bV[_` \x82\x84\x03\x12\x15a\x19QW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x19fW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x19vW__\xFD[\x80Qa\x19\x84a\x133\x82a\x12\xBDV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x19\xA5W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x19\xC7W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x19\xACV[\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a\x19\xE1W__\xFD[\x81Q`\x01`\x01``\x1B\x03\x81\x16\x81\x14a\x13\xDEW__\xFD[c\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x18\xF3`@\x83\x01\x84a\x13\x92V[_` \x82\x84\x03\x12\x15a\x1A%W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x1A:W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a\x1AJW__\xFD[\x80Qa\x1AXa\x133\x82a\x12\xBDV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a\x1AyW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a\x19\xC7W\x83Qa\x1A\x93\x81a\x13\xE5V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a\x1A\x80V[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[c\xFF\xFF\xFF\xFF\x84\x16\x81R`@` \x82\x01R_a\x1A\xEB`@\x83\x01\x84\x86a\x1A\xA4V[\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a\x1B\x04W__\xFD[\x81Q`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x14a\x13\xDEW__\xFD[_` \x82\x84\x03\x12\x15a\x1B*W__\xFD[\x81Qa\x13\xDE\x81a\x13\xE5V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[_`\x01\x82\x01a\x1BZWa\x1BZa\x1B5V[P`\x01\x01\x90V[_`\xFF\x82\x16`\xFF\x81\x03a\x1BvWa\x1Bva\x1B5V[`\x01\x01\x92\x91PPV[`@\x81R_a\x1B\x92`@\x83\x01\x85\x87a\x1A\xA4V[\x90Pc\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x94\x93PPPPV[\x81\x81\x03\x81\x81\x11\x15a\x12\\Wa\x12\\a\x1B5V[_a\xFF\xFF\x82\x16a\xFF\xFF\x81\x03a\x1BvWa\x1Bva\x1B5V\xFE\xA2dipfsX\"\x12 I+?`\x92nF\xAD\xE5U\x1F?\xAD\xAA\x07qMM\x8E\xAB,\xE5\x0F\x89\xA4\xA1J\0\xB1::\xC1dsolcC\0\x08\x1B\x003",
298    );
299    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
300    /**```solidity
301    struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
302    ```*/
303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
304    #[derive(Clone)]
305    pub struct CheckSignaturesIndices {
306        #[allow(missing_docs)]
307        pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>,
308        #[allow(missing_docs)]
309        pub quorumApkIndices: alloy::sol_types::private::Vec<u32>,
310        #[allow(missing_docs)]
311        pub totalStakeIndices: alloy::sol_types::private::Vec<u32>,
312        #[allow(missing_docs)]
313        pub nonSignerStakeIndices:
314            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
315    }
316    #[allow(
317        non_camel_case_types,
318        non_snake_case,
319        clippy::pub_underscore_fields,
320        clippy::style
321    )]
322    const _: () = {
323        use alloy::sol_types as alloy_sol_types;
324        #[doc(hidden)]
325        type UnderlyingSolTuple<'a> = (
326            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
327            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
328            alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
329            alloy::sol_types::sol_data::Array<
330                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
331            >,
332        );
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            alloy::sol_types::private::Vec<u32>,
336            alloy::sol_types::private::Vec<u32>,
337            alloy::sol_types::private::Vec<u32>,
338            alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<CheckSignaturesIndices> for UnderlyingRustTuple<'_> {
352            fn from(value: CheckSignaturesIndices) -> Self {
353                (
354                    value.nonSignerQuorumBitmapIndices,
355                    value.quorumApkIndices,
356                    value.totalStakeIndices,
357                    value.nonSignerStakeIndices,
358                )
359            }
360        }
361        #[automatically_derived]
362        #[doc(hidden)]
363        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CheckSignaturesIndices {
364            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
365                Self {
366                    nonSignerQuorumBitmapIndices: tuple.0,
367                    quorumApkIndices: tuple.1,
368                    totalStakeIndices: tuple.2,
369                    nonSignerStakeIndices: tuple.3,
370                }
371            }
372        }
373        #[automatically_derived]
374        impl alloy_sol_types::SolValue for CheckSignaturesIndices {
375            type SolType = Self;
376        }
377        #[automatically_derived]
378        impl alloy_sol_types::private::SolTypeValue<Self> for CheckSignaturesIndices {
379            #[inline]
380            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
381                (
382                    <alloy::sol_types::sol_data::Array<
383                        alloy::sol_types::sol_data::Uint<32>,
384                    > as alloy_sol_types::SolType>::tokenize(
385                        &self.nonSignerQuorumBitmapIndices,
386                    ),
387                    <alloy::sol_types::sol_data::Array<
388                        alloy::sol_types::sol_data::Uint<32>,
389                    > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices),
390                    <alloy::sol_types::sol_data::Array<
391                        alloy::sol_types::sol_data::Uint<32>,
392                    > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices),
393                    <alloy::sol_types::sol_data::Array<
394                        alloy::sol_types::sol_data::Array<
395                            alloy::sol_types::sol_data::Uint<32>,
396                        >,
397                    > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices),
398                )
399            }
400            #[inline]
401            fn stv_abi_encoded_size(&self) -> usize {
402                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
403                    return size;
404                }
405                let tuple =
406                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
407                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
408            }
409            #[inline]
410            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
411                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
412            }
413            #[inline]
414            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
415                let tuple =
416                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
417                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
418                    &tuple, out,
419                )
420            }
421            #[inline]
422            fn stv_abi_packed_encoded_size(&self) -> usize {
423                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
424                    return size;
425                }
426                let tuple =
427                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
428                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
429                    &tuple,
430                )
431            }
432        }
433        #[automatically_derived]
434        impl alloy_sol_types::SolType for CheckSignaturesIndices {
435            type RustType = Self;
436            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
437            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
438            const ENCODED_SIZE: Option<usize> =
439                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
440            const PACKED_ENCODED_SIZE: Option<usize> =
441                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
442            #[inline]
443            fn valid_token(token: &Self::Token<'_>) -> bool {
444                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
445            }
446            #[inline]
447            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
448                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
449                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
450            }
451        }
452        #[automatically_derived]
453        impl alloy_sol_types::SolStruct for CheckSignaturesIndices {
454            const NAME: &'static str = "CheckSignaturesIndices";
455            #[inline]
456            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
457                alloy_sol_types::private::Cow::Borrowed(
458                    "CheckSignaturesIndices(uint32[] nonSignerQuorumBitmapIndices,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)",
459                )
460            }
461            #[inline]
462            fn eip712_components(
463            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
464            {
465                alloy_sol_types::private::Vec::new()
466            }
467            #[inline]
468            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
469                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
470            }
471            #[inline]
472            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
473                [
474                    <alloy::sol_types::sol_data::Array<
475                        alloy::sol_types::sol_data::Uint<32>,
476                    > as alloy_sol_types::SolType>::eip712_data_word(
477                            &self.nonSignerQuorumBitmapIndices,
478                        )
479                        .0,
480                    <alloy::sol_types::sol_data::Array<
481                        alloy::sol_types::sol_data::Uint<32>,
482                    > as alloy_sol_types::SolType>::eip712_data_word(
483                            &self.quorumApkIndices,
484                        )
485                        .0,
486                    <alloy::sol_types::sol_data::Array<
487                        alloy::sol_types::sol_data::Uint<32>,
488                    > as alloy_sol_types::SolType>::eip712_data_word(
489                            &self.totalStakeIndices,
490                        )
491                        .0,
492                    <alloy::sol_types::sol_data::Array<
493                        alloy::sol_types::sol_data::Array<
494                            alloy::sol_types::sol_data::Uint<32>,
495                        >,
496                    > as alloy_sol_types::SolType>::eip712_data_word(
497                            &self.nonSignerStakeIndices,
498                        )
499                        .0,
500                ]
501                    .concat()
502            }
503        }
504        #[automatically_derived]
505        impl alloy_sol_types::EventTopic for CheckSignaturesIndices {
506            #[inline]
507            fn topic_preimage_length(rust: &Self::RustType) -> usize {
508                0usize
509                    + <alloy::sol_types::sol_data::Array<
510                        alloy::sol_types::sol_data::Uint<32>,
511                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
512                        &rust.nonSignerQuorumBitmapIndices,
513                    )
514                    + <alloy::sol_types::sol_data::Array<
515                        alloy::sol_types::sol_data::Uint<32>,
516                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
517                        &rust.quorumApkIndices,
518                    )
519                    + <alloy::sol_types::sol_data::Array<
520                        alloy::sol_types::sol_data::Uint<32>,
521                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
522                        &rust.totalStakeIndices,
523                    )
524                    + <alloy::sol_types::sol_data::Array<
525                        alloy::sol_types::sol_data::Array<
526                            alloy::sol_types::sol_data::Uint<32>,
527                        >,
528                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
529                        &rust.nonSignerStakeIndices,
530                    )
531            }
532            #[inline]
533            fn encode_topic_preimage(
534                rust: &Self::RustType,
535                out: &mut alloy_sol_types::private::Vec<u8>,
536            ) {
537                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
538                <alloy::sol_types::sol_data::Array<
539                    alloy::sol_types::sol_data::Uint<32>,
540                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
541                    &rust.nonSignerQuorumBitmapIndices,
542                    out,
543                );
544                <alloy::sol_types::sol_data::Array<
545                    alloy::sol_types::sol_data::Uint<32>,
546                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
547                    &rust.quorumApkIndices,
548                    out,
549                );
550                <alloy::sol_types::sol_data::Array<
551                    alloy::sol_types::sol_data::Uint<32>,
552                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
553                    &rust.totalStakeIndices,
554                    out,
555                );
556                <alloy::sol_types::sol_data::Array<
557                    alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
558                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
559                    &rust.nonSignerStakeIndices,
560                    out,
561                );
562            }
563            #[inline]
564            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
565                let mut out = alloy_sol_types::private::Vec::new();
566                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
567                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
568            }
569        }
570    };
571    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
572    /**```solidity
573    struct Operator { address operator; bytes32 operatorId; uint96 stake; }
574    ```*/
575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
576    #[derive(Clone)]
577    pub struct Operator {
578        #[allow(missing_docs)]
579        pub operator: alloy::sol_types::private::Address,
580        #[allow(missing_docs)]
581        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
582        #[allow(missing_docs)]
583        pub stake: alloy::sol_types::private::primitives::aliases::U96,
584    }
585    #[allow(
586        non_camel_case_types,
587        non_snake_case,
588        clippy::pub_underscore_fields,
589        clippy::style
590    )]
591    const _: () = {
592        use alloy::sol_types as alloy_sol_types;
593        #[doc(hidden)]
594        type UnderlyingSolTuple<'a> = (
595            alloy::sol_types::sol_data::Address,
596            alloy::sol_types::sol_data::FixedBytes<32>,
597            alloy::sol_types::sol_data::Uint<96>,
598        );
599        #[doc(hidden)]
600        type UnderlyingRustTuple<'a> = (
601            alloy::sol_types::private::Address,
602            alloy::sol_types::private::FixedBytes<32>,
603            alloy::sol_types::private::primitives::aliases::U96,
604        );
605        #[cfg(test)]
606        #[allow(dead_code, unreachable_patterns)]
607        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
608            match _t {
609                alloy_sol_types::private::AssertTypeEq::<
610                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
611                >(_) => {}
612            }
613        }
614        #[automatically_derived]
615        #[doc(hidden)]
616        impl ::core::convert::From<Operator> for UnderlyingRustTuple<'_> {
617            fn from(value: Operator) -> Self {
618                (value.operator, value.operatorId, value.stake)
619            }
620        }
621        #[automatically_derived]
622        #[doc(hidden)]
623        impl ::core::convert::From<UnderlyingRustTuple<'_>> for Operator {
624            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
625                Self {
626                    operator: tuple.0,
627                    operatorId: tuple.1,
628                    stake: tuple.2,
629                }
630            }
631        }
632        #[automatically_derived]
633        impl alloy_sol_types::SolValue for Operator {
634            type SolType = Self;
635        }
636        #[automatically_derived]
637        impl alloy_sol_types::private::SolTypeValue<Self> for Operator {
638            #[inline]
639            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
640                (
641                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
642                        &self.operator,
643                    ),
644                    <alloy::sol_types::sol_data::FixedBytes<
645                        32,
646                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
647                    <alloy::sol_types::sol_data::Uint<
648                        96,
649                    > as alloy_sol_types::SolType>::tokenize(&self.stake),
650                )
651            }
652            #[inline]
653            fn stv_abi_encoded_size(&self) -> usize {
654                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
655                    return size;
656                }
657                let tuple =
658                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
659                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
660            }
661            #[inline]
662            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
663                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
664            }
665            #[inline]
666            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
667                let tuple =
668                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
669                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
670                    &tuple, out,
671                )
672            }
673            #[inline]
674            fn stv_abi_packed_encoded_size(&self) -> usize {
675                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
676                    return size;
677                }
678                let tuple =
679                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
680                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
681                    &tuple,
682                )
683            }
684        }
685        #[automatically_derived]
686        impl alloy_sol_types::SolType for Operator {
687            type RustType = Self;
688            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
689            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
690            const ENCODED_SIZE: Option<usize> =
691                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
692            const PACKED_ENCODED_SIZE: Option<usize> =
693                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
694            #[inline]
695            fn valid_token(token: &Self::Token<'_>) -> bool {
696                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
697            }
698            #[inline]
699            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
700                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
701                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
702            }
703        }
704        #[automatically_derived]
705        impl alloy_sol_types::SolStruct for Operator {
706            const NAME: &'static str = "Operator";
707            #[inline]
708            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
709                alloy_sol_types::private::Cow::Borrowed(
710                    "Operator(address operator,bytes32 operatorId,uint96 stake)",
711                )
712            }
713            #[inline]
714            fn eip712_components(
715            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
716            {
717                alloy_sol_types::private::Vec::new()
718            }
719            #[inline]
720            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
721                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
722            }
723            #[inline]
724            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
725                [
726                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
727                            &self.operator,
728                        )
729                        .0,
730                    <alloy::sol_types::sol_data::FixedBytes<
731                        32,
732                    > as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId)
733                        .0,
734                    <alloy::sol_types::sol_data::Uint<
735                        96,
736                    > as alloy_sol_types::SolType>::eip712_data_word(&self.stake)
737                        .0,
738                ]
739                    .concat()
740            }
741        }
742        #[automatically_derived]
743        impl alloy_sol_types::EventTopic for Operator {
744            #[inline]
745            fn topic_preimage_length(rust: &Self::RustType) -> usize {
746                0usize
747                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
748                        &rust.operator,
749                    )
750                    + <alloy::sol_types::sol_data::FixedBytes<
751                        32,
752                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
753                        &rust.operatorId,
754                    )
755                    + <alloy::sol_types::sol_data::Uint<
756                        96,
757                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake)
758            }
759            #[inline]
760            fn encode_topic_preimage(
761                rust: &Self::RustType,
762                out: &mut alloy_sol_types::private::Vec<u8>,
763            ) {
764                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
765                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
766                    &rust.operator,
767                    out,
768                );
769                <alloy::sol_types::sol_data::FixedBytes<
770                    32,
771                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
772                    &rust.operatorId,
773                    out,
774                );
775                <alloy::sol_types::sol_data::Uint<
776                    96,
777                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
778                    &rust.stake,
779                    out,
780                );
781            }
782            #[inline]
783            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
784                let mut out = alloy_sol_types::private::Vec::new();
785                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
786                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
787            }
788        }
789    };
790    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
791    /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`.
792    ```solidity
793    error OperatorNotRegistered();
794    ```*/
795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
796    #[derive(Clone)]
797    pub struct OperatorNotRegistered;
798    #[allow(
799        non_camel_case_types,
800        non_snake_case,
801        clippy::pub_underscore_fields,
802        clippy::style
803    )]
804    const _: () = {
805        use alloy::sol_types as alloy_sol_types;
806        #[doc(hidden)]
807        type UnderlyingSolTuple<'a> = ();
808        #[doc(hidden)]
809        type UnderlyingRustTuple<'a> = ();
810        #[cfg(test)]
811        #[allow(dead_code, unreachable_patterns)]
812        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
813            match _t {
814                alloy_sol_types::private::AssertTypeEq::<
815                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
816                >(_) => {}
817            }
818        }
819        #[automatically_derived]
820        #[doc(hidden)]
821        impl ::core::convert::From<OperatorNotRegistered> for UnderlyingRustTuple<'_> {
822            fn from(value: OperatorNotRegistered) -> Self {
823                ()
824            }
825        }
826        #[automatically_derived]
827        #[doc(hidden)]
828        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorNotRegistered {
829            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
830                Self
831            }
832        }
833        #[automatically_derived]
834        impl alloy_sol_types::SolError for OperatorNotRegistered {
835            type Parameters<'a> = UnderlyingSolTuple<'a>;
836            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
837            const SIGNATURE: &'static str = "OperatorNotRegistered()";
838            const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8];
839            #[inline]
840            fn new<'a>(
841                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
842            ) -> Self {
843                tuple.into()
844            }
845            #[inline]
846            fn tokenize(&self) -> Self::Token<'_> {
847                ()
848            }
849            #[inline]
850            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
851                <Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
852                    data,
853                )
854                .map(Self::new)
855            }
856        }
857    };
858    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
859    /**Function with signature `getBatchOperatorFromId(address,bytes32[])` and selector `0x4d2b57fe`.
860    ```solidity
861    function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators);
862    ```*/
863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
864    #[derive(Clone)]
865    pub struct getBatchOperatorFromIdCall {
866        #[allow(missing_docs)]
867        pub registryCoordinator: alloy::sol_types::private::Address,
868        #[allow(missing_docs)]
869        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
870    }
871    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
872    ///Container type for the return parameters of the [`getBatchOperatorFromId(address,bytes32[])`](getBatchOperatorFromIdCall) function.
873    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
874    #[derive(Clone)]
875    pub struct getBatchOperatorFromIdReturn {
876        #[allow(missing_docs)]
877        pub operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
878    }
879    #[allow(
880        non_camel_case_types,
881        non_snake_case,
882        clippy::pub_underscore_fields,
883        clippy::style
884    )]
885    const _: () = {
886        use alloy::sol_types as alloy_sol_types;
887        {
888            #[doc(hidden)]
889            type UnderlyingSolTuple<'a> = (
890                alloy::sol_types::sol_data::Address,
891                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
892            );
893            #[doc(hidden)]
894            type UnderlyingRustTuple<'a> = (
895                alloy::sol_types::private::Address,
896                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
897            );
898            #[cfg(test)]
899            #[allow(dead_code, unreachable_patterns)]
900            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
901                match _t {
902                    alloy_sol_types::private::AssertTypeEq::<
903                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
904                    >(_) => {}
905                }
906            }
907            #[automatically_derived]
908            #[doc(hidden)]
909            impl ::core::convert::From<getBatchOperatorFromIdCall> for UnderlyingRustTuple<'_> {
910                fn from(value: getBatchOperatorFromIdCall) -> Self {
911                    (value.registryCoordinator, value.operatorIds)
912                }
913            }
914            #[automatically_derived]
915            #[doc(hidden)]
916            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorFromIdCall {
917                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
918                    Self {
919                        registryCoordinator: tuple.0,
920                        operatorIds: tuple.1,
921                    }
922                }
923            }
924        }
925        {
926            #[doc(hidden)]
927            type UnderlyingSolTuple<'a> =
928                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
929            #[doc(hidden)]
930            type UnderlyingRustTuple<'a> =
931                (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
932            #[cfg(test)]
933            #[allow(dead_code, unreachable_patterns)]
934            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
935                match _t {
936                    alloy_sol_types::private::AssertTypeEq::<
937                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
938                    >(_) => {}
939                }
940            }
941            #[automatically_derived]
942            #[doc(hidden)]
943            impl ::core::convert::From<getBatchOperatorFromIdReturn> for UnderlyingRustTuple<'_> {
944                fn from(value: getBatchOperatorFromIdReturn) -> Self {
945                    (value.operators,)
946                }
947            }
948            #[automatically_derived]
949            #[doc(hidden)]
950            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorFromIdReturn {
951                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
952                    Self { operators: tuple.0 }
953                }
954            }
955        }
956        #[automatically_derived]
957        impl alloy_sol_types::SolCall for getBatchOperatorFromIdCall {
958            type Parameters<'a> = (
959                alloy::sol_types::sol_data::Address,
960                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
961            );
962            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
963            type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::Address>;
964            type ReturnTuple<'a> =
965                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
966            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
967            const SIGNATURE: &'static str = "getBatchOperatorFromId(address,bytes32[])";
968            const SELECTOR: [u8; 4] = [77u8, 43u8, 87u8, 254u8];
969            #[inline]
970            fn new<'a>(
971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
972            ) -> Self {
973                tuple.into()
974            }
975            #[inline]
976            fn tokenize(&self) -> Self::Token<'_> {
977                (
978                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
979                        &self.registryCoordinator,
980                    ),
981                    <alloy::sol_types::sol_data::Array<
982                        alloy::sol_types::sol_data::FixedBytes<32>,
983                    > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
984                )
985            }
986            #[inline]
987            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
988                (<alloy::sol_types::sol_data::Array<
989                    alloy::sol_types::sol_data::Address,
990                > as alloy_sol_types::SolType>::tokenize(ret),)
991            }
992            #[inline]
993            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
994                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
995                    |r| {
996                        let r: getBatchOperatorFromIdReturn = r.into();
997                        r.operators
998                    },
999                )
1000            }
1001            #[inline]
1002            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1003                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1004                    data,
1005                )
1006                .map(|r| {
1007                    let r: getBatchOperatorFromIdReturn = r.into();
1008                    r.operators
1009                })
1010            }
1011        }
1012    };
1013    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1014    /**Function with signature `getBatchOperatorId(address,address[])` and selector `0x31b36bd9`.
1015    ```solidity
1016    function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds);
1017    ```*/
1018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1019    #[derive(Clone)]
1020    pub struct getBatchOperatorIdCall {
1021        #[allow(missing_docs)]
1022        pub registryCoordinator: alloy::sol_types::private::Address,
1023        #[allow(missing_docs)]
1024        pub operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
1025    }
1026    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1027    ///Container type for the return parameters of the [`getBatchOperatorId(address,address[])`](getBatchOperatorIdCall) function.
1028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1029    #[derive(Clone)]
1030    pub struct getBatchOperatorIdReturn {
1031        #[allow(missing_docs)]
1032        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
1033    }
1034    #[allow(
1035        non_camel_case_types,
1036        non_snake_case,
1037        clippy::pub_underscore_fields,
1038        clippy::style
1039    )]
1040    const _: () = {
1041        use alloy::sol_types as alloy_sol_types;
1042        {
1043            #[doc(hidden)]
1044            type UnderlyingSolTuple<'a> = (
1045                alloy::sol_types::sol_data::Address,
1046                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
1047            );
1048            #[doc(hidden)]
1049            type UnderlyingRustTuple<'a> = (
1050                alloy::sol_types::private::Address,
1051                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
1052            );
1053            #[cfg(test)]
1054            #[allow(dead_code, unreachable_patterns)]
1055            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1056                match _t {
1057                    alloy_sol_types::private::AssertTypeEq::<
1058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1059                    >(_) => {}
1060                }
1061            }
1062            #[automatically_derived]
1063            #[doc(hidden)]
1064            impl ::core::convert::From<getBatchOperatorIdCall> for UnderlyingRustTuple<'_> {
1065                fn from(value: getBatchOperatorIdCall) -> Self {
1066                    (value.registryCoordinator, value.operators)
1067                }
1068            }
1069            #[automatically_derived]
1070            #[doc(hidden)]
1071            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorIdCall {
1072                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1073                    Self {
1074                        registryCoordinator: tuple.0,
1075                        operators: tuple.1,
1076                    }
1077                }
1078            }
1079        }
1080        {
1081            #[doc(hidden)]
1082            type UnderlyingSolTuple<'a> =
1083                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
1084            #[doc(hidden)]
1085            type UnderlyingRustTuple<'a> =
1086                (alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,);
1087            #[cfg(test)]
1088            #[allow(dead_code, unreachable_patterns)]
1089            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1090                match _t {
1091                    alloy_sol_types::private::AssertTypeEq::<
1092                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1093                    >(_) => {}
1094                }
1095            }
1096            #[automatically_derived]
1097            #[doc(hidden)]
1098            impl ::core::convert::From<getBatchOperatorIdReturn> for UnderlyingRustTuple<'_> {
1099                fn from(value: getBatchOperatorIdReturn) -> Self {
1100                    (value.operatorIds,)
1101                }
1102            }
1103            #[automatically_derived]
1104            #[doc(hidden)]
1105            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorIdReturn {
1106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1107                    Self {
1108                        operatorIds: tuple.0,
1109                    }
1110                }
1111            }
1112        }
1113        #[automatically_derived]
1114        impl alloy_sol_types::SolCall for getBatchOperatorIdCall {
1115            type Parameters<'a> = (
1116                alloy::sol_types::sol_data::Address,
1117                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
1118            );
1119            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1120            type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>;
1121            type ReturnTuple<'a> =
1122                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,);
1123            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1124            const SIGNATURE: &'static str = "getBatchOperatorId(address,address[])";
1125            const SELECTOR: [u8; 4] = [49u8, 179u8, 107u8, 217u8];
1126            #[inline]
1127            fn new<'a>(
1128                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1129            ) -> Self {
1130                tuple.into()
1131            }
1132            #[inline]
1133            fn tokenize(&self) -> Self::Token<'_> {
1134                (
1135                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1136                        &self.registryCoordinator,
1137                    ),
1138                    <alloy::sol_types::sol_data::Array<
1139                        alloy::sol_types::sol_data::Address,
1140                    > as alloy_sol_types::SolType>::tokenize(&self.operators),
1141                )
1142            }
1143            #[inline]
1144            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1145                (<alloy::sol_types::sol_data::Array<
1146                    alloy::sol_types::sol_data::FixedBytes<32>,
1147                > as alloy_sol_types::SolType>::tokenize(ret),)
1148            }
1149            #[inline]
1150            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1151                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
1152                    |r| {
1153                        let r: getBatchOperatorIdReturn = r.into();
1154                        r.operatorIds
1155                    },
1156                )
1157            }
1158            #[inline]
1159            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1160                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1161                    data,
1162                )
1163                .map(|r| {
1164                    let r: getBatchOperatorIdReturn = r.into();
1165                    r.operatorIds
1166                })
1167            }
1168        }
1169    };
1170    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1171    /**Function with signature `getCheckSignaturesIndices(address,uint32,bytes,bytes32[])` and selector `0x4f739f74`.
1172    ```solidity
1173    function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (CheckSignaturesIndices memory);
1174    ```*/
1175    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1176    #[derive(Clone)]
1177    pub struct getCheckSignaturesIndicesCall {
1178        #[allow(missing_docs)]
1179        pub registryCoordinator: alloy::sol_types::private::Address,
1180        #[allow(missing_docs)]
1181        pub referenceBlockNumber: u32,
1182        #[allow(missing_docs)]
1183        pub quorumNumbers: alloy::sol_types::private::Bytes,
1184        #[allow(missing_docs)]
1185        pub nonSignerOperatorIds:
1186            alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
1187    }
1188    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1189    ///Container type for the return parameters of the [`getCheckSignaturesIndices(address,uint32,bytes,bytes32[])`](getCheckSignaturesIndicesCall) function.
1190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1191    #[derive(Clone)]
1192    pub struct getCheckSignaturesIndicesReturn {
1193        #[allow(missing_docs)]
1194        pub _0: <CheckSignaturesIndices as alloy::sol_types::SolType>::RustType,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        {
1205            #[doc(hidden)]
1206            type UnderlyingSolTuple<'a> = (
1207                alloy::sol_types::sol_data::Address,
1208                alloy::sol_types::sol_data::Uint<32>,
1209                alloy::sol_types::sol_data::Bytes,
1210                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
1211            );
1212            #[doc(hidden)]
1213            type UnderlyingRustTuple<'a> = (
1214                alloy::sol_types::private::Address,
1215                u32,
1216                alloy::sol_types::private::Bytes,
1217                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
1218            );
1219            #[cfg(test)]
1220            #[allow(dead_code, unreachable_patterns)]
1221            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1222                match _t {
1223                    alloy_sol_types::private::AssertTypeEq::<
1224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1225                    >(_) => {}
1226                }
1227            }
1228            #[automatically_derived]
1229            #[doc(hidden)]
1230            impl ::core::convert::From<getCheckSignaturesIndicesCall> for UnderlyingRustTuple<'_> {
1231                fn from(value: getCheckSignaturesIndicesCall) -> Self {
1232                    (
1233                        value.registryCoordinator,
1234                        value.referenceBlockNumber,
1235                        value.quorumNumbers,
1236                        value.nonSignerOperatorIds,
1237                    )
1238                }
1239            }
1240            #[automatically_derived]
1241            #[doc(hidden)]
1242            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCheckSignaturesIndicesCall {
1243                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1244                    Self {
1245                        registryCoordinator: tuple.0,
1246                        referenceBlockNumber: tuple.1,
1247                        quorumNumbers: tuple.2,
1248                        nonSignerOperatorIds: tuple.3,
1249                    }
1250                }
1251            }
1252        }
1253        {
1254            #[doc(hidden)]
1255            type UnderlyingSolTuple<'a> = (CheckSignaturesIndices,);
1256            #[doc(hidden)]
1257            type UnderlyingRustTuple<'a> =
1258                (<CheckSignaturesIndices as alloy::sol_types::SolType>::RustType,);
1259            #[cfg(test)]
1260            #[allow(dead_code, unreachable_patterns)]
1261            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1262                match _t {
1263                    alloy_sol_types::private::AssertTypeEq::<
1264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1265                    >(_) => {}
1266                }
1267            }
1268            #[automatically_derived]
1269            #[doc(hidden)]
1270            impl ::core::convert::From<getCheckSignaturesIndicesReturn> for UnderlyingRustTuple<'_> {
1271                fn from(value: getCheckSignaturesIndicesReturn) -> Self {
1272                    (value._0,)
1273                }
1274            }
1275            #[automatically_derived]
1276            #[doc(hidden)]
1277            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCheckSignaturesIndicesReturn {
1278                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1279                    Self { _0: tuple.0 }
1280                }
1281            }
1282        }
1283        #[automatically_derived]
1284        impl alloy_sol_types::SolCall for getCheckSignaturesIndicesCall {
1285            type Parameters<'a> = (
1286                alloy::sol_types::sol_data::Address,
1287                alloy::sol_types::sol_data::Uint<32>,
1288                alloy::sol_types::sol_data::Bytes,
1289                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
1290            );
1291            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1292            type Return = <CheckSignaturesIndices as alloy::sol_types::SolType>::RustType;
1293            type ReturnTuple<'a> = (CheckSignaturesIndices,);
1294            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1295            const SIGNATURE: &'static str =
1296                "getCheckSignaturesIndices(address,uint32,bytes,bytes32[])";
1297            const SELECTOR: [u8; 4] = [79u8, 115u8, 159u8, 116u8];
1298            #[inline]
1299            fn new<'a>(
1300                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1301            ) -> Self {
1302                tuple.into()
1303            }
1304            #[inline]
1305            fn tokenize(&self) -> Self::Token<'_> {
1306                (
1307                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1308                        &self.registryCoordinator,
1309                    ),
1310                    <alloy::sol_types::sol_data::Uint<
1311                        32,
1312                    > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber),
1313                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1314                        &self.quorumNumbers,
1315                    ),
1316                    <alloy::sol_types::sol_data::Array<
1317                        alloy::sol_types::sol_data::FixedBytes<32>,
1318                    > as alloy_sol_types::SolType>::tokenize(&self.nonSignerOperatorIds),
1319                )
1320            }
1321            #[inline]
1322            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1323                (<CheckSignaturesIndices as alloy_sol_types::SolType>::tokenize(ret),)
1324            }
1325            #[inline]
1326            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1327                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
1328                    |r| {
1329                        let r: getCheckSignaturesIndicesReturn = r.into();
1330                        r._0
1331                    },
1332                )
1333            }
1334            #[inline]
1335            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1336                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1337                    data,
1338                )
1339                .map(|r| {
1340                    let r: getCheckSignaturesIndicesReturn = r.into();
1341                    r._0
1342                })
1343            }
1344        }
1345    };
1346    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1347    /**Function with signature `getOperatorState(address,bytes,uint32)` and selector `0x3563b0d1`.
1348    ```solidity
1349    function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (Operator[][] memory);
1350    ```*/
1351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1352    #[derive(Clone)]
1353    pub struct getOperatorState_0Call {
1354        #[allow(missing_docs)]
1355        pub registryCoordinator: alloy::sol_types::private::Address,
1356        #[allow(missing_docs)]
1357        pub quorumNumbers: alloy::sol_types::private::Bytes,
1358        #[allow(missing_docs)]
1359        pub blockNumber: u32,
1360    }
1361    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1362    ///Container type for the return parameters of the [`getOperatorState(address,bytes,uint32)`](getOperatorState_0Call) function.
1363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1364    #[derive(Clone)]
1365    pub struct getOperatorState_0Return {
1366        #[allow(missing_docs)]
1367        pub _0: alloy::sol_types::private::Vec<
1368            alloy::sol_types::private::Vec<<Operator as alloy::sol_types::SolType>::RustType>,
1369        >,
1370    }
1371    #[allow(
1372        non_camel_case_types,
1373        non_snake_case,
1374        clippy::pub_underscore_fields,
1375        clippy::style
1376    )]
1377    const _: () = {
1378        use alloy::sol_types as alloy_sol_types;
1379        {
1380            #[doc(hidden)]
1381            type UnderlyingSolTuple<'a> = (
1382                alloy::sol_types::sol_data::Address,
1383                alloy::sol_types::sol_data::Bytes,
1384                alloy::sol_types::sol_data::Uint<32>,
1385            );
1386            #[doc(hidden)]
1387            type UnderlyingRustTuple<'a> = (
1388                alloy::sol_types::private::Address,
1389                alloy::sol_types::private::Bytes,
1390                u32,
1391            );
1392            #[cfg(test)]
1393            #[allow(dead_code, unreachable_patterns)]
1394            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1395                match _t {
1396                    alloy_sol_types::private::AssertTypeEq::<
1397                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1398                    >(_) => {}
1399                }
1400            }
1401            #[automatically_derived]
1402            #[doc(hidden)]
1403            impl ::core::convert::From<getOperatorState_0Call> for UnderlyingRustTuple<'_> {
1404                fn from(value: getOperatorState_0Call) -> Self {
1405                    (
1406                        value.registryCoordinator,
1407                        value.quorumNumbers,
1408                        value.blockNumber,
1409                    )
1410                }
1411            }
1412            #[automatically_derived]
1413            #[doc(hidden)]
1414            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_0Call {
1415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1416                    Self {
1417                        registryCoordinator: tuple.0,
1418                        quorumNumbers: tuple.1,
1419                        blockNumber: tuple.2,
1420                    }
1421                }
1422            }
1423        }
1424        {
1425            #[doc(hidden)]
1426            type UnderlyingSolTuple<'a> =
1427                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Array<Operator>>,);
1428            #[doc(hidden)]
1429            type UnderlyingRustTuple<'a> = (
1430                alloy::sol_types::private::Vec<
1431                    alloy::sol_types::private::Vec<
1432                        <Operator as alloy::sol_types::SolType>::RustType,
1433                    >,
1434                >,
1435            );
1436            #[cfg(test)]
1437            #[allow(dead_code, unreachable_patterns)]
1438            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1439                match _t {
1440                    alloy_sol_types::private::AssertTypeEq::<
1441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1442                    >(_) => {}
1443                }
1444            }
1445            #[automatically_derived]
1446            #[doc(hidden)]
1447            impl ::core::convert::From<getOperatorState_0Return> for UnderlyingRustTuple<'_> {
1448                fn from(value: getOperatorState_0Return) -> Self {
1449                    (value._0,)
1450                }
1451            }
1452            #[automatically_derived]
1453            #[doc(hidden)]
1454            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_0Return {
1455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1456                    Self { _0: tuple.0 }
1457                }
1458            }
1459        }
1460        #[automatically_derived]
1461        impl alloy_sol_types::SolCall for getOperatorState_0Call {
1462            type Parameters<'a> = (
1463                alloy::sol_types::sol_data::Address,
1464                alloy::sol_types::sol_data::Bytes,
1465                alloy::sol_types::sol_data::Uint<32>,
1466            );
1467            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1468            type Return = alloy::sol_types::private::Vec<
1469                alloy::sol_types::private::Vec<<Operator as alloy::sol_types::SolType>::RustType>,
1470            >;
1471            type ReturnTuple<'a> =
1472                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Array<Operator>>,);
1473            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1474            const SIGNATURE: &'static str = "getOperatorState(address,bytes,uint32)";
1475            const SELECTOR: [u8; 4] = [53u8, 99u8, 176u8, 209u8];
1476            #[inline]
1477            fn new<'a>(
1478                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1479            ) -> Self {
1480                tuple.into()
1481            }
1482            #[inline]
1483            fn tokenize(&self) -> Self::Token<'_> {
1484                (
1485                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1486                        &self.registryCoordinator,
1487                    ),
1488                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
1489                        &self.quorumNumbers,
1490                    ),
1491                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
1492                        &self.blockNumber,
1493                    ),
1494                )
1495            }
1496            #[inline]
1497            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1498                (<alloy::sol_types::sol_data::Array<
1499                    alloy::sol_types::sol_data::Array<Operator>,
1500                > as alloy_sol_types::SolType>::tokenize(ret),)
1501            }
1502            #[inline]
1503            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1504                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
1505                    |r| {
1506                        let r: getOperatorState_0Return = r.into();
1507                        r._0
1508                    },
1509                )
1510            }
1511            #[inline]
1512            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1513                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1514                    data,
1515                )
1516                .map(|r| {
1517                    let r: getOperatorState_0Return = r.into();
1518                    r._0
1519                })
1520            }
1521        }
1522    };
1523    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1524    /**Function with signature `getOperatorState(address,bytes32,uint32)` and selector `0xcefdc1d4`.
1525    ```solidity
1526    function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, Operator[][] memory);
1527    ```*/
1528    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1529    #[derive(Clone)]
1530    pub struct getOperatorState_1Call {
1531        #[allow(missing_docs)]
1532        pub registryCoordinator: alloy::sol_types::private::Address,
1533        #[allow(missing_docs)]
1534        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
1535        #[allow(missing_docs)]
1536        pub blockNumber: u32,
1537    }
1538    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1539    ///Container type for the return parameters of the [`getOperatorState(address,bytes32,uint32)`](getOperatorState_1Call) function.
1540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1541    #[derive(Clone)]
1542    pub struct getOperatorState_1Return {
1543        #[allow(missing_docs)]
1544        pub _0: alloy::sol_types::private::primitives::aliases::U256,
1545        #[allow(missing_docs)]
1546        pub _1: alloy::sol_types::private::Vec<
1547            alloy::sol_types::private::Vec<<Operator as alloy::sol_types::SolType>::RustType>,
1548        >,
1549    }
1550    #[allow(
1551        non_camel_case_types,
1552        non_snake_case,
1553        clippy::pub_underscore_fields,
1554        clippy::style
1555    )]
1556    const _: () = {
1557        use alloy::sol_types as alloy_sol_types;
1558        {
1559            #[doc(hidden)]
1560            type UnderlyingSolTuple<'a> = (
1561                alloy::sol_types::sol_data::Address,
1562                alloy::sol_types::sol_data::FixedBytes<32>,
1563                alloy::sol_types::sol_data::Uint<32>,
1564            );
1565            #[doc(hidden)]
1566            type UnderlyingRustTuple<'a> = (
1567                alloy::sol_types::private::Address,
1568                alloy::sol_types::private::FixedBytes<32>,
1569                u32,
1570            );
1571            #[cfg(test)]
1572            #[allow(dead_code, unreachable_patterns)]
1573            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1574                match _t {
1575                    alloy_sol_types::private::AssertTypeEq::<
1576                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1577                    >(_) => {}
1578                }
1579            }
1580            #[automatically_derived]
1581            #[doc(hidden)]
1582            impl ::core::convert::From<getOperatorState_1Call> for UnderlyingRustTuple<'_> {
1583                fn from(value: getOperatorState_1Call) -> Self {
1584                    (
1585                        value.registryCoordinator,
1586                        value.operatorId,
1587                        value.blockNumber,
1588                    )
1589                }
1590            }
1591            #[automatically_derived]
1592            #[doc(hidden)]
1593            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_1Call {
1594                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1595                    Self {
1596                        registryCoordinator: tuple.0,
1597                        operatorId: tuple.1,
1598                        blockNumber: tuple.2,
1599                    }
1600                }
1601            }
1602        }
1603        {
1604            #[doc(hidden)]
1605            type UnderlyingSolTuple<'a> = (
1606                alloy::sol_types::sol_data::Uint<256>,
1607                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Array<Operator>>,
1608            );
1609            #[doc(hidden)]
1610            type UnderlyingRustTuple<'a> = (
1611                alloy::sol_types::private::primitives::aliases::U256,
1612                alloy::sol_types::private::Vec<
1613                    alloy::sol_types::private::Vec<
1614                        <Operator as alloy::sol_types::SolType>::RustType,
1615                    >,
1616                >,
1617            );
1618            #[cfg(test)]
1619            #[allow(dead_code, unreachable_patterns)]
1620            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1621                match _t {
1622                    alloy_sol_types::private::AssertTypeEq::<
1623                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1624                    >(_) => {}
1625                }
1626            }
1627            #[automatically_derived]
1628            #[doc(hidden)]
1629            impl ::core::convert::From<getOperatorState_1Return> for UnderlyingRustTuple<'_> {
1630                fn from(value: getOperatorState_1Return) -> Self {
1631                    (value._0, value._1)
1632                }
1633            }
1634            #[automatically_derived]
1635            #[doc(hidden)]
1636            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_1Return {
1637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1638                    Self {
1639                        _0: tuple.0,
1640                        _1: tuple.1,
1641                    }
1642                }
1643            }
1644        }
1645        impl getOperatorState_1Return {
1646            fn _tokenize(
1647                &self,
1648            ) -> <getOperatorState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
1649                (
1650                    <alloy::sol_types::sol_data::Uint<
1651                        256,
1652                    > as alloy_sol_types::SolType>::tokenize(&self._0),
1653                    <alloy::sol_types::sol_data::Array<
1654                        alloy::sol_types::sol_data::Array<Operator>,
1655                    > as alloy_sol_types::SolType>::tokenize(&self._1),
1656                )
1657            }
1658        }
1659        #[automatically_derived]
1660        impl alloy_sol_types::SolCall for getOperatorState_1Call {
1661            type Parameters<'a> = (
1662                alloy::sol_types::sol_data::Address,
1663                alloy::sol_types::sol_data::FixedBytes<32>,
1664                alloy::sol_types::sol_data::Uint<32>,
1665            );
1666            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1667            type Return = getOperatorState_1Return;
1668            type ReturnTuple<'a> = (
1669                alloy::sol_types::sol_data::Uint<256>,
1670                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Array<Operator>>,
1671            );
1672            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1673            const SIGNATURE: &'static str = "getOperatorState(address,bytes32,uint32)";
1674            const SELECTOR: [u8; 4] = [206u8, 253u8, 193u8, 212u8];
1675            #[inline]
1676            fn new<'a>(
1677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1678            ) -> Self {
1679                tuple.into()
1680            }
1681            #[inline]
1682            fn tokenize(&self) -> Self::Token<'_> {
1683                (
1684                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1685                        &self.registryCoordinator,
1686                    ),
1687                    <alloy::sol_types::sol_data::FixedBytes<
1688                        32,
1689                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
1690                    <alloy::sol_types::sol_data::Uint<
1691                        32,
1692                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
1693                )
1694            }
1695            #[inline]
1696            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1697                getOperatorState_1Return::_tokenize(ret)
1698            }
1699            #[inline]
1700            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1701                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
1702                    .map(Into::into)
1703            }
1704            #[inline]
1705            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1706                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1707                    data,
1708                )
1709                .map(Into::into)
1710            }
1711        }
1712    };
1713    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1714    /**Function with signature `getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)` and selector `0x5c155662`.
1715    ```solidity
1716    function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory);
1717    ```*/
1718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1719    #[derive(Clone)]
1720    pub struct getQuorumBitmapsAtBlockNumberCall {
1721        #[allow(missing_docs)]
1722        pub registryCoordinator: alloy::sol_types::private::Address,
1723        #[allow(missing_docs)]
1724        pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
1725        #[allow(missing_docs)]
1726        pub blockNumber: u32,
1727    }
1728    #[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
1729    ///Container type for the return parameters of the [`getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)`](getQuorumBitmapsAtBlockNumberCall) function.
1730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1731    #[derive(Clone)]
1732    pub struct getQuorumBitmapsAtBlockNumberReturn {
1733        #[allow(missing_docs)]
1734        pub _0:
1735            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
1736    }
1737    #[allow(
1738        non_camel_case_types,
1739        non_snake_case,
1740        clippy::pub_underscore_fields,
1741        clippy::style
1742    )]
1743    const _: () = {
1744        use alloy::sol_types as alloy_sol_types;
1745        {
1746            #[doc(hidden)]
1747            type UnderlyingSolTuple<'a> = (
1748                alloy::sol_types::sol_data::Address,
1749                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
1750                alloy::sol_types::sol_data::Uint<32>,
1751            );
1752            #[doc(hidden)]
1753            type UnderlyingRustTuple<'a> = (
1754                alloy::sol_types::private::Address,
1755                alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
1756                u32,
1757            );
1758            #[cfg(test)]
1759            #[allow(dead_code, unreachable_patterns)]
1760            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1761                match _t {
1762                    alloy_sol_types::private::AssertTypeEq::<
1763                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1764                    >(_) => {}
1765                }
1766            }
1767            #[automatically_derived]
1768            #[doc(hidden)]
1769            impl ::core::convert::From<getQuorumBitmapsAtBlockNumberCall> for UnderlyingRustTuple<'_> {
1770                fn from(value: getQuorumBitmapsAtBlockNumberCall) -> Self {
1771                    (
1772                        value.registryCoordinator,
1773                        value.operatorIds,
1774                        value.blockNumber,
1775                    )
1776                }
1777            }
1778            #[automatically_derived]
1779            #[doc(hidden)]
1780            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getQuorumBitmapsAtBlockNumberCall {
1781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1782                    Self {
1783                        registryCoordinator: tuple.0,
1784                        operatorIds: tuple.1,
1785                        blockNumber: tuple.2,
1786                    }
1787                }
1788            }
1789        }
1790        {
1791            #[doc(hidden)]
1792            type UnderlyingSolTuple<'a> =
1793                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,);
1794            #[doc(hidden)]
1795            type UnderlyingRustTuple<'a> = (
1796                alloy::sol_types::private::Vec<
1797                    alloy::sol_types::private::primitives::aliases::U256,
1798                >,
1799            );
1800            #[cfg(test)]
1801            #[allow(dead_code, unreachable_patterns)]
1802            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1803                match _t {
1804                    alloy_sol_types::private::AssertTypeEq::<
1805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1806                    >(_) => {}
1807                }
1808            }
1809            #[automatically_derived]
1810            #[doc(hidden)]
1811            impl ::core::convert::From<getQuorumBitmapsAtBlockNumberReturn> for UnderlyingRustTuple<'_> {
1812                fn from(value: getQuorumBitmapsAtBlockNumberReturn) -> Self {
1813                    (value._0,)
1814                }
1815            }
1816            #[automatically_derived]
1817            #[doc(hidden)]
1818            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getQuorumBitmapsAtBlockNumberReturn {
1819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1820                    Self { _0: tuple.0 }
1821                }
1822            }
1823        }
1824        #[automatically_derived]
1825        impl alloy_sol_types::SolCall for getQuorumBitmapsAtBlockNumberCall {
1826            type Parameters<'a> = (
1827                alloy::sol_types::sol_data::Address,
1828                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,
1829                alloy::sol_types::sol_data::Uint<32>,
1830            );
1831            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1832            type Return = alloy::sol_types::private::Vec<
1833                alloy::sol_types::private::primitives::aliases::U256,
1834            >;
1835            type ReturnTuple<'a> =
1836                (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,);
1837            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1838            const SIGNATURE: &'static str =
1839                "getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)";
1840            const SELECTOR: [u8; 4] = [92u8, 21u8, 86u8, 98u8];
1841            #[inline]
1842            fn new<'a>(
1843                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1844            ) -> Self {
1845                tuple.into()
1846            }
1847            #[inline]
1848            fn tokenize(&self) -> Self::Token<'_> {
1849                (
1850                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1851                        &self.registryCoordinator,
1852                    ),
1853                    <alloy::sol_types::sol_data::Array<
1854                        alloy::sol_types::sol_data::FixedBytes<32>,
1855                    > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
1856                    <alloy::sol_types::sol_data::Uint<
1857                        32,
1858                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
1859                )
1860            }
1861            #[inline]
1862            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1863                (<alloy::sol_types::sol_data::Array<
1864                    alloy::sol_types::sol_data::Uint<256>,
1865                > as alloy_sol_types::SolType>::tokenize(ret),)
1866            }
1867            #[inline]
1868            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1869                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
1870                    |r| {
1871                        let r: getQuorumBitmapsAtBlockNumberReturn = r.into();
1872                        r._0
1873                    },
1874                )
1875            }
1876            #[inline]
1877            fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1878                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
1879                    data,
1880                )
1881                .map(|r| {
1882                    let r: getQuorumBitmapsAtBlockNumberReturn = r.into();
1883                    r._0
1884                })
1885            }
1886        }
1887    };
1888    ///Container for all the [`OperatorStateRetriever`](self) function calls.
1889    #[derive(serde::Serialize, serde::Deserialize)]
1890    pub enum OperatorStateRetrieverCalls {
1891        #[allow(missing_docs)]
1892        getBatchOperatorFromId(getBatchOperatorFromIdCall),
1893        #[allow(missing_docs)]
1894        getBatchOperatorId(getBatchOperatorIdCall),
1895        #[allow(missing_docs)]
1896        getCheckSignaturesIndices(getCheckSignaturesIndicesCall),
1897        #[allow(missing_docs)]
1898        getOperatorState_0(getOperatorState_0Call),
1899        #[allow(missing_docs)]
1900        getOperatorState_1(getOperatorState_1Call),
1901        #[allow(missing_docs)]
1902        getQuorumBitmapsAtBlockNumber(getQuorumBitmapsAtBlockNumberCall),
1903    }
1904    #[automatically_derived]
1905    impl OperatorStateRetrieverCalls {
1906        /// All the selectors of this enum.
1907        ///
1908        /// Note that the selectors might not be in the same order as the variants.
1909        /// No guarantees are made about the order of the selectors.
1910        ///
1911        /// Prefer using `SolInterface` methods instead.
1912        pub const SELECTORS: &'static [[u8; 4usize]] = &[
1913            [49u8, 179u8, 107u8, 217u8],
1914            [53u8, 99u8, 176u8, 209u8],
1915            [77u8, 43u8, 87u8, 254u8],
1916            [79u8, 115u8, 159u8, 116u8],
1917            [92u8, 21u8, 86u8, 98u8],
1918            [206u8, 253u8, 193u8, 212u8],
1919        ];
1920    }
1921    #[automatically_derived]
1922    impl alloy_sol_types::SolInterface for OperatorStateRetrieverCalls {
1923        const NAME: &'static str = "OperatorStateRetrieverCalls";
1924        const MIN_DATA_LENGTH: usize = 96usize;
1925        const COUNT: usize = 6usize;
1926        #[inline]
1927        fn selector(&self) -> [u8; 4] {
1928            match self {
1929                Self::getBatchOperatorFromId(_) => {
1930                    <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::SELECTOR
1931                }
1932                Self::getBatchOperatorId(_) => {
1933                    <getBatchOperatorIdCall as alloy_sol_types::SolCall>::SELECTOR
1934                }
1935                Self::getCheckSignaturesIndices(_) => {
1936                    <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::SELECTOR
1937                }
1938                Self::getOperatorState_0(_) => {
1939                    <getOperatorState_0Call as alloy_sol_types::SolCall>::SELECTOR
1940                }
1941                Self::getOperatorState_1(_) => {
1942                    <getOperatorState_1Call as alloy_sol_types::SolCall>::SELECTOR
1943                }
1944                Self::getQuorumBitmapsAtBlockNumber(_) => {
1945                    <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
1946                }
1947            }
1948        }
1949        #[inline]
1950        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
1951            Self::SELECTORS.get(i).copied()
1952        }
1953        #[inline]
1954        fn valid_selector(selector: [u8; 4]) -> bool {
1955            Self::SELECTORS.binary_search(&selector).is_ok()
1956        }
1957        #[inline]
1958        #[allow(non_snake_case)]
1959        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
1960            static DECODE_SHIMS: &[fn(
1961                &[u8],
1962            )
1963                -> alloy_sol_types::Result<OperatorStateRetrieverCalls>] = &[
1964                {
1965                    fn getBatchOperatorId(
1966                        data: &[u8],
1967                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
1968                        <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
1969                            .map(OperatorStateRetrieverCalls::getBatchOperatorId)
1970                    }
1971                    getBatchOperatorId
1972                },
1973                {
1974                    fn getOperatorState_0(
1975                        data: &[u8],
1976                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
1977                        <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
1978                            .map(OperatorStateRetrieverCalls::getOperatorState_0)
1979                    }
1980                    getOperatorState_0
1981                },
1982                {
1983                    fn getBatchOperatorFromId(
1984                        data: &[u8],
1985                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
1986                        <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_decode_raw(
1987                            data,
1988                        )
1989                        .map(OperatorStateRetrieverCalls::getBatchOperatorFromId)
1990                    }
1991                    getBatchOperatorFromId
1992                },
1993                {
1994                    fn getCheckSignaturesIndices(
1995                        data: &[u8],
1996                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
1997                        <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_decode_raw(
1998                            data,
1999                        )
2000                        .map(OperatorStateRetrieverCalls::getCheckSignaturesIndices)
2001                    }
2002                    getCheckSignaturesIndices
2003                },
2004                {
2005                    fn getQuorumBitmapsAtBlockNumber(
2006                        data: &[u8],
2007                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2008                        <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
2009                                data,
2010                            )
2011                            .map(
2012                                OperatorStateRetrieverCalls::getQuorumBitmapsAtBlockNumber,
2013                            )
2014                    }
2015                    getQuorumBitmapsAtBlockNumber
2016                },
2017                {
2018                    fn getOperatorState_1(
2019                        data: &[u8],
2020                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2021                        <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
2022                            .map(OperatorStateRetrieverCalls::getOperatorState_1)
2023                    }
2024                    getOperatorState_1
2025                },
2026            ];
2027            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
2028                return Err(alloy_sol_types::Error::unknown_selector(
2029                    <Self as alloy_sol_types::SolInterface>::NAME,
2030                    selector,
2031                ));
2032            };
2033            DECODE_SHIMS[idx](data)
2034        }
2035        #[inline]
2036        #[allow(non_snake_case)]
2037        fn abi_decode_raw_validate(
2038            selector: [u8; 4],
2039            data: &[u8],
2040        ) -> alloy_sol_types::Result<Self> {
2041            static DECODE_VALIDATE_SHIMS: &[fn(
2042                &[u8],
2043            ) -> alloy_sol_types::Result<
2044                OperatorStateRetrieverCalls,
2045            >] = &[
2046                {
2047                    fn getBatchOperatorId(
2048                        data: &[u8],
2049                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2050                        <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
2051                                data,
2052                            )
2053                            .map(OperatorStateRetrieverCalls::getBatchOperatorId)
2054                    }
2055                    getBatchOperatorId
2056                },
2057                {
2058                    fn getOperatorState_0(
2059                        data: &[u8],
2060                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2061                        <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
2062                                data,
2063                            )
2064                            .map(OperatorStateRetrieverCalls::getOperatorState_0)
2065                    }
2066                    getOperatorState_0
2067                },
2068                {
2069                    fn getBatchOperatorFromId(
2070                        data: &[u8],
2071                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2072                        <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
2073                                data,
2074                            )
2075                            .map(OperatorStateRetrieverCalls::getBatchOperatorFromId)
2076                    }
2077                    getBatchOperatorFromId
2078                },
2079                {
2080                    fn getCheckSignaturesIndices(
2081                        data: &[u8],
2082                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2083                        <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
2084                                data,
2085                            )
2086                            .map(OperatorStateRetrieverCalls::getCheckSignaturesIndices)
2087                    }
2088                    getCheckSignaturesIndices
2089                },
2090                {
2091                    fn getQuorumBitmapsAtBlockNumber(
2092                        data: &[u8],
2093                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2094                        <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
2095                                data,
2096                            )
2097                            .map(
2098                                OperatorStateRetrieverCalls::getQuorumBitmapsAtBlockNumber,
2099                            )
2100                    }
2101                    getQuorumBitmapsAtBlockNumber
2102                },
2103                {
2104                    fn getOperatorState_1(
2105                        data: &[u8],
2106                    ) -> alloy_sol_types::Result<OperatorStateRetrieverCalls> {
2107                        <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
2108                                data,
2109                            )
2110                            .map(OperatorStateRetrieverCalls::getOperatorState_1)
2111                    }
2112                    getOperatorState_1
2113                },
2114            ];
2115            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
2116                return Err(alloy_sol_types::Error::unknown_selector(
2117                    <Self as alloy_sol_types::SolInterface>::NAME,
2118                    selector,
2119                ));
2120            };
2121            DECODE_VALIDATE_SHIMS[idx](data)
2122        }
2123        #[inline]
2124        fn abi_encoded_size(&self) -> usize {
2125            match self {
2126                Self::getBatchOperatorFromId(inner) => {
2127                    <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_encoded_size(
2128                        inner,
2129                    )
2130                }
2131                Self::getBatchOperatorId(inner) => {
2132                    <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_encoded_size(
2133                        inner,
2134                    )
2135                }
2136                Self::getCheckSignaturesIndices(inner) => {
2137                    <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_encoded_size(
2138                        inner,
2139                    )
2140                }
2141                Self::getOperatorState_0(inner) => {
2142                    <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
2143                        inner,
2144                    )
2145                }
2146                Self::getOperatorState_1(inner) => {
2147                    <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
2148                        inner,
2149                    )
2150                }
2151                Self::getQuorumBitmapsAtBlockNumber(inner) => {
2152                    <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
2153                        inner,
2154                    )
2155                }
2156            }
2157        }
2158        #[inline]
2159        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2160            match self {
2161                Self::getBatchOperatorFromId(inner) => {
2162                    <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_encode_raw(
2163                        inner, out,
2164                    )
2165                }
2166                Self::getBatchOperatorId(inner) => {
2167                    <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
2168                }
2169                Self::getCheckSignaturesIndices(inner) => {
2170                    <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_encode_raw(
2171                        inner, out,
2172                    )
2173                }
2174                Self::getOperatorState_0(inner) => {
2175                    <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
2176                }
2177                Self::getOperatorState_1(inner) => {
2178                    <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
2179                }
2180                Self::getQuorumBitmapsAtBlockNumber(inner) => {
2181                    <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
2182                        inner, out,
2183                    )
2184                }
2185            }
2186        }
2187    }
2188    ///Container for all the [`OperatorStateRetriever`](self) custom errors.
2189    #[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
2190    pub enum OperatorStateRetrieverErrors {
2191        #[allow(missing_docs)]
2192        OperatorNotRegistered(OperatorNotRegistered),
2193    }
2194    #[automatically_derived]
2195    impl OperatorStateRetrieverErrors {
2196        /// All the selectors of this enum.
2197        ///
2198        /// Note that the selectors might not be in the same order as the variants.
2199        /// No guarantees are made about the order of the selectors.
2200        ///
2201        /// Prefer using `SolInterface` methods instead.
2202        pub const SELECTORS: &'static [[u8; 4usize]] = &[[37u8, 236u8, 108u8, 31u8]];
2203    }
2204    #[automatically_derived]
2205    impl alloy_sol_types::SolInterface for OperatorStateRetrieverErrors {
2206        const NAME: &'static str = "OperatorStateRetrieverErrors";
2207        const MIN_DATA_LENGTH: usize = 0usize;
2208        const COUNT: usize = 1usize;
2209        #[inline]
2210        fn selector(&self) -> [u8; 4] {
2211            match self {
2212                Self::OperatorNotRegistered(_) => {
2213                    <OperatorNotRegistered as alloy_sol_types::SolError>::SELECTOR
2214                }
2215            }
2216        }
2217        #[inline]
2218        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
2219            Self::SELECTORS.get(i).copied()
2220        }
2221        #[inline]
2222        fn valid_selector(selector: [u8; 4]) -> bool {
2223            Self::SELECTORS.binary_search(&selector).is_ok()
2224        }
2225        #[inline]
2226        #[allow(non_snake_case)]
2227        fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
2228            static DECODE_SHIMS: &[fn(
2229                &[u8],
2230            )
2231                -> alloy_sol_types::Result<OperatorStateRetrieverErrors>] = &[{
2232                fn OperatorNotRegistered(
2233                    data: &[u8],
2234                ) -> alloy_sol_types::Result<OperatorStateRetrieverErrors> {
2235                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw(data)
2236                        .map(OperatorStateRetrieverErrors::OperatorNotRegistered)
2237                }
2238                OperatorNotRegistered
2239            }];
2240            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
2241                return Err(alloy_sol_types::Error::unknown_selector(
2242                    <Self as alloy_sol_types::SolInterface>::NAME,
2243                    selector,
2244                ));
2245            };
2246            DECODE_SHIMS[idx](data)
2247        }
2248        #[inline]
2249        #[allow(non_snake_case)]
2250        fn abi_decode_raw_validate(
2251            selector: [u8; 4],
2252            data: &[u8],
2253        ) -> alloy_sol_types::Result<Self> {
2254            static DECODE_VALIDATE_SHIMS: &[fn(
2255                &[u8],
2256            ) -> alloy_sol_types::Result<
2257                OperatorStateRetrieverErrors,
2258            >] = &[{
2259                fn OperatorNotRegistered(
2260                    data: &[u8],
2261                ) -> alloy_sol_types::Result<OperatorStateRetrieverErrors> {
2262                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
2263                        data,
2264                    )
2265                    .map(OperatorStateRetrieverErrors::OperatorNotRegistered)
2266                }
2267                OperatorNotRegistered
2268            }];
2269            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
2270                return Err(alloy_sol_types::Error::unknown_selector(
2271                    <Self as alloy_sol_types::SolInterface>::NAME,
2272                    selector,
2273                ));
2274            };
2275            DECODE_VALIDATE_SHIMS[idx](data)
2276        }
2277        #[inline]
2278        fn abi_encoded_size(&self) -> usize {
2279            match self {
2280                Self::OperatorNotRegistered(inner) => {
2281                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encoded_size(inner)
2282                }
2283            }
2284        }
2285        #[inline]
2286        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2287            match self {
2288                Self::OperatorNotRegistered(inner) => {
2289                    <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
2290                }
2291            }
2292        }
2293    }
2294    use alloy::contract as alloy_contract;
2295    /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance.
2296
2297    See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/
2298    #[inline]
2299    pub const fn new<
2300        P: alloy_contract::private::Provider<N>,
2301        N: alloy_contract::private::Network,
2302    >(
2303        address: alloy_sol_types::private::Address,
2304        provider: P,
2305    ) -> OperatorStateRetrieverInstance<P, N> {
2306        OperatorStateRetrieverInstance::<P, N>::new(address, provider)
2307    }
2308    /**Deploys this contract using the given `provider` and constructor arguments, if any.
2309
2310    Returns a new instance of the contract, if the deployment was successful.
2311
2312    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
2313    #[inline]
2314    pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
2315        provider: P,
2316    ) -> impl ::core::future::Future<Output = alloy_contract::Result<OperatorStateRetrieverInstance<P, N>>>
2317    {
2318        OperatorStateRetrieverInstance::<P, N>::deploy(provider)
2319    }
2320    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
2321    and constructor arguments, if any.
2322
2323    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
2324    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
2325    #[inline]
2326    pub fn deploy_builder<
2327        P: alloy_contract::private::Provider<N>,
2328        N: alloy_contract::private::Network,
2329    >(
2330        provider: P,
2331    ) -> alloy_contract::RawCallBuilder<P, N> {
2332        OperatorStateRetrieverInstance::<P, N>::deploy_builder(provider)
2333    }
2334    /**A [`OperatorStateRetriever`](self) instance.
2335
2336    Contains type-safe methods for interacting with an on-chain instance of the
2337    [`OperatorStateRetriever`](self) contract located at a given `address`, using a given
2338    provider `P`.
2339
2340    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2341    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2342    be used to deploy a new instance of the contract.
2343
2344    See the [module-level documentation](self) for all the available methods.*/
2345    #[derive(Clone)]
2346    pub struct OperatorStateRetrieverInstance<P, N = alloy_contract::private::Ethereum> {
2347        address: alloy_sol_types::private::Address,
2348        provider: P,
2349        _network: ::core::marker::PhantomData<N>,
2350    }
2351    #[automatically_derived]
2352    impl<P, N> ::core::fmt::Debug for OperatorStateRetrieverInstance<P, N> {
2353        #[inline]
2354        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2355            f.debug_tuple("OperatorStateRetrieverInstance")
2356                .field(&self.address)
2357                .finish()
2358        }
2359    }
2360    /// Instantiation and getters/setters.
2361    #[automatically_derived]
2362    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
2363        OperatorStateRetrieverInstance<P, N>
2364    {
2365        /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance.
2366
2367        See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/
2368        #[inline]
2369        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
2370            Self {
2371                address,
2372                provider,
2373                _network: ::core::marker::PhantomData,
2374            }
2375        }
2376        /**Deploys this contract using the given `provider` and constructor arguments, if any.
2377
2378        Returns a new instance of the contract, if the deployment was successful.
2379
2380        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
2381        #[inline]
2382        pub async fn deploy(
2383            provider: P,
2384        ) -> alloy_contract::Result<OperatorStateRetrieverInstance<P, N>> {
2385            let call_builder = Self::deploy_builder(provider);
2386            let contract_address = call_builder.deploy().await?;
2387            Ok(Self::new(contract_address, call_builder.provider))
2388        }
2389        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
2390        and constructor arguments, if any.
2391
2392        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
2393        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
2394        #[inline]
2395        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
2396            alloy_contract::RawCallBuilder::new_raw_deploy(
2397                provider,
2398                ::core::clone::Clone::clone(&BYTECODE),
2399            )
2400        }
2401        /// Returns a reference to the address.
2402        #[inline]
2403        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2404            &self.address
2405        }
2406        /// Sets the address.
2407        #[inline]
2408        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2409            self.address = address;
2410        }
2411        /// Sets the address and returns `self`.
2412        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2413            self.set_address(address);
2414            self
2415        }
2416        /// Returns a reference to the provider.
2417        #[inline]
2418        pub const fn provider(&self) -> &P {
2419            &self.provider
2420        }
2421    }
2422    impl<P: ::core::clone::Clone, N> OperatorStateRetrieverInstance<&P, N> {
2423        /// Clones the provider and returns a new instance with the cloned provider.
2424        #[inline]
2425        pub fn with_cloned_provider(self) -> OperatorStateRetrieverInstance<P, N> {
2426            OperatorStateRetrieverInstance {
2427                address: self.address,
2428                provider: ::core::clone::Clone::clone(&self.provider),
2429                _network: ::core::marker::PhantomData,
2430            }
2431        }
2432    }
2433    /// Function calls.
2434    #[automatically_derived]
2435    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
2436        OperatorStateRetrieverInstance<P, N>
2437    {
2438        /// Creates a new call builder using this contract instance's provider and address.
2439        ///
2440        /// Note that the call can be any function call, not just those defined in this
2441        /// contract. Prefer using the other methods for building type-safe contract calls.
2442        pub fn call_builder<C: alloy_sol_types::SolCall>(
2443            &self,
2444            call: &C,
2445        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2446            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2447        }
2448        ///Creates a new call builder for the [`getBatchOperatorFromId`] function.
2449        pub fn getBatchOperatorFromId(
2450            &self,
2451            registryCoordinator: alloy::sol_types::private::Address,
2452            operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
2453        ) -> alloy_contract::SolCallBuilder<&P, getBatchOperatorFromIdCall, N> {
2454            self.call_builder(&getBatchOperatorFromIdCall {
2455                registryCoordinator,
2456                operatorIds,
2457            })
2458        }
2459        ///Creates a new call builder for the [`getBatchOperatorId`] function.
2460        pub fn getBatchOperatorId(
2461            &self,
2462            registryCoordinator: alloy::sol_types::private::Address,
2463            operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
2464        ) -> alloy_contract::SolCallBuilder<&P, getBatchOperatorIdCall, N> {
2465            self.call_builder(&getBatchOperatorIdCall {
2466                registryCoordinator,
2467                operators,
2468            })
2469        }
2470        ///Creates a new call builder for the [`getCheckSignaturesIndices`] function.
2471        pub fn getCheckSignaturesIndices(
2472            &self,
2473            registryCoordinator: alloy::sol_types::private::Address,
2474            referenceBlockNumber: u32,
2475            quorumNumbers: alloy::sol_types::private::Bytes,
2476            nonSignerOperatorIds: alloy::sol_types::private::Vec<
2477                alloy::sol_types::private::FixedBytes<32>,
2478            >,
2479        ) -> alloy_contract::SolCallBuilder<&P, getCheckSignaturesIndicesCall, N> {
2480            self.call_builder(&getCheckSignaturesIndicesCall {
2481                registryCoordinator,
2482                referenceBlockNumber,
2483                quorumNumbers,
2484                nonSignerOperatorIds,
2485            })
2486        }
2487        ///Creates a new call builder for the [`getOperatorState_0`] function.
2488        pub fn getOperatorState_0(
2489            &self,
2490            registryCoordinator: alloy::sol_types::private::Address,
2491            quorumNumbers: alloy::sol_types::private::Bytes,
2492            blockNumber: u32,
2493        ) -> alloy_contract::SolCallBuilder<&P, getOperatorState_0Call, N> {
2494            self.call_builder(&getOperatorState_0Call {
2495                registryCoordinator,
2496                quorumNumbers,
2497                blockNumber,
2498            })
2499        }
2500        ///Creates a new call builder for the [`getOperatorState_1`] function.
2501        pub fn getOperatorState_1(
2502            &self,
2503            registryCoordinator: alloy::sol_types::private::Address,
2504            operatorId: alloy::sol_types::private::FixedBytes<32>,
2505            blockNumber: u32,
2506        ) -> alloy_contract::SolCallBuilder<&P, getOperatorState_1Call, N> {
2507            self.call_builder(&getOperatorState_1Call {
2508                registryCoordinator,
2509                operatorId,
2510                blockNumber,
2511            })
2512        }
2513        ///Creates a new call builder for the [`getQuorumBitmapsAtBlockNumber`] function.
2514        pub fn getQuorumBitmapsAtBlockNumber(
2515            &self,
2516            registryCoordinator: alloy::sol_types::private::Address,
2517            operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,
2518            blockNumber: u32,
2519        ) -> alloy_contract::SolCallBuilder<&P, getQuorumBitmapsAtBlockNumberCall, N> {
2520            self.call_builder(&getQuorumBitmapsAtBlockNumberCall {
2521                registryCoordinator,
2522                operatorIds,
2523                blockNumber,
2524            })
2525        }
2526    }
2527    /// Event filters.
2528    #[automatically_derived]
2529    impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
2530        OperatorStateRetrieverInstance<P, N>
2531    {
2532        /// Creates a new event filter using this contract instance's provider and address.
2533        ///
2534        /// Note that the type can be any event, not just those defined in this contract.
2535        /// Prefer using the other methods for building type-safe event filters.
2536        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2537            &self,
2538        ) -> alloy_contract::Event<&P, E, N> {
2539            alloy_contract::Event::new_sol(&self.provider, &self.address)
2540        }
2541    }
2542}