hotshot_contract_adapter/bindings/
reward_claim.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface RewardClaim {
6    error AccessControlBadConfirmation();
7    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
8    error AddressEmptyCode(address target);
9    error AlreadyClaimed();
10    error DailyLimitExceeded();
11    error DailyLimitTooHigh();
12    error DefaultAdminCannotBeRenounced();
13    error DefaultAdminCannotBeRevoked();
14    error ERC1967InvalidImplementation(address implementation);
15    error ERC1967NonPayable();
16    error EnforcedPause();
17    error ExpectedPause();
18    error FailedInnerCall();
19    error InvalidAuthRoot();
20    error InvalidInitialization();
21    error InvalidRewardAmount();
22    error NoChangeRequired();
23    error NotInitializing();
24    error ReentrancyGuardReentrantCall();
25    error UUPSUnauthorizedCallContext();
26    error UUPSUnsupportedProxiableUUID(bytes32 slot);
27    error ZeroAdminAddress();
28    error ZeroDailyLimit();
29    error ZeroLightClientAddress();
30    error ZeroPauserAddress();
31    error ZeroTokenAddress();
32    error ZeroTotalSupply();
33
34    event DailyLimitUpdated(uint256 oldLimit, uint256 newLimit);
35    event Initialized(uint64 version);
36    event Paused(address account);
37    event RewardsClaimed(address indexed user, uint256 amount);
38    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
39    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
40    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
41    event Unpaused(address account);
42    event Upgraded(address indexed implementation);
43
44    constructor();
45
46    function BPS_DENOMINATOR() external view returns (uint256);
47    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
48    function MAX_DAILY_LIMIT_BASIS_POINTS() external view returns (uint256);
49    function PAUSER_ROLE() external view returns (bytes32);
50    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
51    function claimRewards(uint256 lifetimeRewards, bytes memory authData) external;
52    function claimedRewards(address claimer) external view returns (uint256 claimed);
53    function currentAdmin() external view returns (address);
54    function dailyLimitWei() external view returns (uint256);
55    function espToken() external view returns (address);
56    function getRoleAdmin(bytes32 role) external view returns (bytes32);
57    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
58    function grantRole(bytes32 role, address account) external;
59    function hasRole(bytes32 role, address account) external view returns (bool);
60    function initialize(address _admin, address _espToken, address _lightClient, address _pauser) external;
61    function lastSetDailyLimitBasisPoints() external view returns (uint256);
62    function lightClient() external view returns (address);
63    function pause() external;
64    function paused() external view returns (bool);
65    function proxiableUUID() external view returns (bytes32);
66    function renounceRole(bytes32 role, address callerConfirmation) external;
67    function revokeRole(bytes32 role, address account) external;
68    function setDailyLimit(uint256 basisPoints) external;
69    function supportsInterface(bytes4 interfaceId) external view returns (bool);
70    function totalClaimed() external view returns (uint256);
71    function unpause() external;
72    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
73}
74```
75
76...which was generated by the following JSON ABI:
77```json
78[
79  {
80    "type": "constructor",
81    "inputs": [],
82    "stateMutability": "nonpayable"
83  },
84  {
85    "type": "function",
86    "name": "BPS_DENOMINATOR",
87    "inputs": [],
88    "outputs": [
89      {
90        "name": "",
91        "type": "uint256",
92        "internalType": "uint256"
93      }
94    ],
95    "stateMutability": "view"
96  },
97  {
98    "type": "function",
99    "name": "DEFAULT_ADMIN_ROLE",
100    "inputs": [],
101    "outputs": [
102      {
103        "name": "",
104        "type": "bytes32",
105        "internalType": "bytes32"
106      }
107    ],
108    "stateMutability": "view"
109  },
110  {
111    "type": "function",
112    "name": "MAX_DAILY_LIMIT_BASIS_POINTS",
113    "inputs": [],
114    "outputs": [
115      {
116        "name": "",
117        "type": "uint256",
118        "internalType": "uint256"
119      }
120    ],
121    "stateMutability": "view"
122  },
123  {
124    "type": "function",
125    "name": "PAUSER_ROLE",
126    "inputs": [],
127    "outputs": [
128      {
129        "name": "",
130        "type": "bytes32",
131        "internalType": "bytes32"
132      }
133    ],
134    "stateMutability": "view"
135  },
136  {
137    "type": "function",
138    "name": "UPGRADE_INTERFACE_VERSION",
139    "inputs": [],
140    "outputs": [
141      {
142        "name": "",
143        "type": "string",
144        "internalType": "string"
145      }
146    ],
147    "stateMutability": "view"
148  },
149  {
150    "type": "function",
151    "name": "claimRewards",
152    "inputs": [
153      {
154        "name": "lifetimeRewards",
155        "type": "uint256",
156        "internalType": "uint256"
157      },
158      {
159        "name": "authData",
160        "type": "bytes",
161        "internalType": "bytes"
162      }
163    ],
164    "outputs": [],
165    "stateMutability": "nonpayable"
166  },
167  {
168    "type": "function",
169    "name": "claimedRewards",
170    "inputs": [
171      {
172        "name": "claimer",
173        "type": "address",
174        "internalType": "address"
175      }
176    ],
177    "outputs": [
178      {
179        "name": "claimed",
180        "type": "uint256",
181        "internalType": "uint256"
182      }
183    ],
184    "stateMutability": "view"
185  },
186  {
187    "type": "function",
188    "name": "currentAdmin",
189    "inputs": [],
190    "outputs": [
191      {
192        "name": "",
193        "type": "address",
194        "internalType": "address"
195      }
196    ],
197    "stateMutability": "view"
198  },
199  {
200    "type": "function",
201    "name": "dailyLimitWei",
202    "inputs": [],
203    "outputs": [
204      {
205        "name": "",
206        "type": "uint256",
207        "internalType": "uint256"
208      }
209    ],
210    "stateMutability": "view"
211  },
212  {
213    "type": "function",
214    "name": "espToken",
215    "inputs": [],
216    "outputs": [
217      {
218        "name": "",
219        "type": "address",
220        "internalType": "contract EspTokenV2"
221      }
222    ],
223    "stateMutability": "view"
224  },
225  {
226    "type": "function",
227    "name": "getRoleAdmin",
228    "inputs": [
229      {
230        "name": "role",
231        "type": "bytes32",
232        "internalType": "bytes32"
233      }
234    ],
235    "outputs": [
236      {
237        "name": "",
238        "type": "bytes32",
239        "internalType": "bytes32"
240      }
241    ],
242    "stateMutability": "view"
243  },
244  {
245    "type": "function",
246    "name": "getVersion",
247    "inputs": [],
248    "outputs": [
249      {
250        "name": "majorVersion",
251        "type": "uint8",
252        "internalType": "uint8"
253      },
254      {
255        "name": "minorVersion",
256        "type": "uint8",
257        "internalType": "uint8"
258      },
259      {
260        "name": "patchVersion",
261        "type": "uint8",
262        "internalType": "uint8"
263      }
264    ],
265    "stateMutability": "pure"
266  },
267  {
268    "type": "function",
269    "name": "grantRole",
270    "inputs": [
271      {
272        "name": "role",
273        "type": "bytes32",
274        "internalType": "bytes32"
275      },
276      {
277        "name": "account",
278        "type": "address",
279        "internalType": "address"
280      }
281    ],
282    "outputs": [],
283    "stateMutability": "nonpayable"
284  },
285  {
286    "type": "function",
287    "name": "hasRole",
288    "inputs": [
289      {
290        "name": "role",
291        "type": "bytes32",
292        "internalType": "bytes32"
293      },
294      {
295        "name": "account",
296        "type": "address",
297        "internalType": "address"
298      }
299    ],
300    "outputs": [
301      {
302        "name": "",
303        "type": "bool",
304        "internalType": "bool"
305      }
306    ],
307    "stateMutability": "view"
308  },
309  {
310    "type": "function",
311    "name": "initialize",
312    "inputs": [
313      {
314        "name": "_admin",
315        "type": "address",
316        "internalType": "address"
317      },
318      {
319        "name": "_espToken",
320        "type": "address",
321        "internalType": "address"
322      },
323      {
324        "name": "_lightClient",
325        "type": "address",
326        "internalType": "address"
327      },
328      {
329        "name": "_pauser",
330        "type": "address",
331        "internalType": "address"
332      }
333    ],
334    "outputs": [],
335    "stateMutability": "nonpayable"
336  },
337  {
338    "type": "function",
339    "name": "lastSetDailyLimitBasisPoints",
340    "inputs": [],
341    "outputs": [
342      {
343        "name": "",
344        "type": "uint256",
345        "internalType": "uint256"
346      }
347    ],
348    "stateMutability": "view"
349  },
350  {
351    "type": "function",
352    "name": "lightClient",
353    "inputs": [],
354    "outputs": [
355      {
356        "name": "",
357        "type": "address",
358        "internalType": "contract LightClientV3"
359      }
360    ],
361    "stateMutability": "view"
362  },
363  {
364    "type": "function",
365    "name": "pause",
366    "inputs": [],
367    "outputs": [],
368    "stateMutability": "nonpayable"
369  },
370  {
371    "type": "function",
372    "name": "paused",
373    "inputs": [],
374    "outputs": [
375      {
376        "name": "",
377        "type": "bool",
378        "internalType": "bool"
379      }
380    ],
381    "stateMutability": "view"
382  },
383  {
384    "type": "function",
385    "name": "proxiableUUID",
386    "inputs": [],
387    "outputs": [
388      {
389        "name": "",
390        "type": "bytes32",
391        "internalType": "bytes32"
392      }
393    ],
394    "stateMutability": "view"
395  },
396  {
397    "type": "function",
398    "name": "renounceRole",
399    "inputs": [
400      {
401        "name": "role",
402        "type": "bytes32",
403        "internalType": "bytes32"
404      },
405      {
406        "name": "callerConfirmation",
407        "type": "address",
408        "internalType": "address"
409      }
410    ],
411    "outputs": [],
412    "stateMutability": "nonpayable"
413  },
414  {
415    "type": "function",
416    "name": "revokeRole",
417    "inputs": [
418      {
419        "name": "role",
420        "type": "bytes32",
421        "internalType": "bytes32"
422      },
423      {
424        "name": "account",
425        "type": "address",
426        "internalType": "address"
427      }
428    ],
429    "outputs": [],
430    "stateMutability": "nonpayable"
431  },
432  {
433    "type": "function",
434    "name": "setDailyLimit",
435    "inputs": [
436      {
437        "name": "basisPoints",
438        "type": "uint256",
439        "internalType": "uint256"
440      }
441    ],
442    "outputs": [],
443    "stateMutability": "nonpayable"
444  },
445  {
446    "type": "function",
447    "name": "supportsInterface",
448    "inputs": [
449      {
450        "name": "interfaceId",
451        "type": "bytes4",
452        "internalType": "bytes4"
453      }
454    ],
455    "outputs": [
456      {
457        "name": "",
458        "type": "bool",
459        "internalType": "bool"
460      }
461    ],
462    "stateMutability": "view"
463  },
464  {
465    "type": "function",
466    "name": "totalClaimed",
467    "inputs": [],
468    "outputs": [
469      {
470        "name": "",
471        "type": "uint256",
472        "internalType": "uint256"
473      }
474    ],
475    "stateMutability": "view"
476  },
477  {
478    "type": "function",
479    "name": "unpause",
480    "inputs": [],
481    "outputs": [],
482    "stateMutability": "nonpayable"
483  },
484  {
485    "type": "function",
486    "name": "upgradeToAndCall",
487    "inputs": [
488      {
489        "name": "newImplementation",
490        "type": "address",
491        "internalType": "address"
492      },
493      {
494        "name": "data",
495        "type": "bytes",
496        "internalType": "bytes"
497      }
498    ],
499    "outputs": [],
500    "stateMutability": "payable"
501  },
502  {
503    "type": "event",
504    "name": "DailyLimitUpdated",
505    "inputs": [
506      {
507        "name": "oldLimit",
508        "type": "uint256",
509        "indexed": false,
510        "internalType": "uint256"
511      },
512      {
513        "name": "newLimit",
514        "type": "uint256",
515        "indexed": false,
516        "internalType": "uint256"
517      }
518    ],
519    "anonymous": false
520  },
521  {
522    "type": "event",
523    "name": "Initialized",
524    "inputs": [
525      {
526        "name": "version",
527        "type": "uint64",
528        "indexed": false,
529        "internalType": "uint64"
530      }
531    ],
532    "anonymous": false
533  },
534  {
535    "type": "event",
536    "name": "Paused",
537    "inputs": [
538      {
539        "name": "account",
540        "type": "address",
541        "indexed": false,
542        "internalType": "address"
543      }
544    ],
545    "anonymous": false
546  },
547  {
548    "type": "event",
549    "name": "RewardsClaimed",
550    "inputs": [
551      {
552        "name": "user",
553        "type": "address",
554        "indexed": true,
555        "internalType": "address"
556      },
557      {
558        "name": "amount",
559        "type": "uint256",
560        "indexed": false,
561        "internalType": "uint256"
562      }
563    ],
564    "anonymous": false
565  },
566  {
567    "type": "event",
568    "name": "RoleAdminChanged",
569    "inputs": [
570      {
571        "name": "role",
572        "type": "bytes32",
573        "indexed": true,
574        "internalType": "bytes32"
575      },
576      {
577        "name": "previousAdminRole",
578        "type": "bytes32",
579        "indexed": true,
580        "internalType": "bytes32"
581      },
582      {
583        "name": "newAdminRole",
584        "type": "bytes32",
585        "indexed": true,
586        "internalType": "bytes32"
587      }
588    ],
589    "anonymous": false
590  },
591  {
592    "type": "event",
593    "name": "RoleGranted",
594    "inputs": [
595      {
596        "name": "role",
597        "type": "bytes32",
598        "indexed": true,
599        "internalType": "bytes32"
600      },
601      {
602        "name": "account",
603        "type": "address",
604        "indexed": true,
605        "internalType": "address"
606      },
607      {
608        "name": "sender",
609        "type": "address",
610        "indexed": true,
611        "internalType": "address"
612      }
613    ],
614    "anonymous": false
615  },
616  {
617    "type": "event",
618    "name": "RoleRevoked",
619    "inputs": [
620      {
621        "name": "role",
622        "type": "bytes32",
623        "indexed": true,
624        "internalType": "bytes32"
625      },
626      {
627        "name": "account",
628        "type": "address",
629        "indexed": true,
630        "internalType": "address"
631      },
632      {
633        "name": "sender",
634        "type": "address",
635        "indexed": true,
636        "internalType": "address"
637      }
638    ],
639    "anonymous": false
640  },
641  {
642    "type": "event",
643    "name": "Unpaused",
644    "inputs": [
645      {
646        "name": "account",
647        "type": "address",
648        "indexed": false,
649        "internalType": "address"
650      }
651    ],
652    "anonymous": false
653  },
654  {
655    "type": "event",
656    "name": "Upgraded",
657    "inputs": [
658      {
659        "name": "implementation",
660        "type": "address",
661        "indexed": true,
662        "internalType": "address"
663      }
664    ],
665    "anonymous": false
666  },
667  {
668    "type": "error",
669    "name": "AccessControlBadConfirmation",
670    "inputs": []
671  },
672  {
673    "type": "error",
674    "name": "AccessControlUnauthorizedAccount",
675    "inputs": [
676      {
677        "name": "account",
678        "type": "address",
679        "internalType": "address"
680      },
681      {
682        "name": "neededRole",
683        "type": "bytes32",
684        "internalType": "bytes32"
685      }
686    ]
687  },
688  {
689    "type": "error",
690    "name": "AddressEmptyCode",
691    "inputs": [
692      {
693        "name": "target",
694        "type": "address",
695        "internalType": "address"
696      }
697    ]
698  },
699  {
700    "type": "error",
701    "name": "AlreadyClaimed",
702    "inputs": []
703  },
704  {
705    "type": "error",
706    "name": "DailyLimitExceeded",
707    "inputs": []
708  },
709  {
710    "type": "error",
711    "name": "DailyLimitTooHigh",
712    "inputs": []
713  },
714  {
715    "type": "error",
716    "name": "DefaultAdminCannotBeRenounced",
717    "inputs": []
718  },
719  {
720    "type": "error",
721    "name": "DefaultAdminCannotBeRevoked",
722    "inputs": []
723  },
724  {
725    "type": "error",
726    "name": "ERC1967InvalidImplementation",
727    "inputs": [
728      {
729        "name": "implementation",
730        "type": "address",
731        "internalType": "address"
732      }
733    ]
734  },
735  {
736    "type": "error",
737    "name": "ERC1967NonPayable",
738    "inputs": []
739  },
740  {
741    "type": "error",
742    "name": "EnforcedPause",
743    "inputs": []
744  },
745  {
746    "type": "error",
747    "name": "ExpectedPause",
748    "inputs": []
749  },
750  {
751    "type": "error",
752    "name": "FailedInnerCall",
753    "inputs": []
754  },
755  {
756    "type": "error",
757    "name": "InvalidAuthRoot",
758    "inputs": []
759  },
760  {
761    "type": "error",
762    "name": "InvalidInitialization",
763    "inputs": []
764  },
765  {
766    "type": "error",
767    "name": "InvalidRewardAmount",
768    "inputs": []
769  },
770  {
771    "type": "error",
772    "name": "NoChangeRequired",
773    "inputs": []
774  },
775  {
776    "type": "error",
777    "name": "NotInitializing",
778    "inputs": []
779  },
780  {
781    "type": "error",
782    "name": "ReentrancyGuardReentrantCall",
783    "inputs": []
784  },
785  {
786    "type": "error",
787    "name": "UUPSUnauthorizedCallContext",
788    "inputs": []
789  },
790  {
791    "type": "error",
792    "name": "UUPSUnsupportedProxiableUUID",
793    "inputs": [
794      {
795        "name": "slot",
796        "type": "bytes32",
797        "internalType": "bytes32"
798      }
799    ]
800  },
801  {
802    "type": "error",
803    "name": "ZeroAdminAddress",
804    "inputs": []
805  },
806  {
807    "type": "error",
808    "name": "ZeroDailyLimit",
809    "inputs": []
810  },
811  {
812    "type": "error",
813    "name": "ZeroLightClientAddress",
814    "inputs": []
815  },
816  {
817    "type": "error",
818    "name": "ZeroPauserAddress",
819    "inputs": []
820  },
821  {
822    "type": "error",
823    "name": "ZeroTokenAddress",
824    "inputs": []
825  },
826  {
827    "type": "error",
828    "name": "ZeroTotalSupply",
829    "inputs": []
830  }
831]
832```*/
833#[allow(
834    non_camel_case_types,
835    non_snake_case,
836    clippy::pub_underscore_fields,
837    clippy::style,
838    clippy::empty_structs_with_brackets
839)]
840pub mod RewardClaim {
841    use super::*;
842    use alloy::sol_types as alloy_sol_types;
843    /// The creation / init bytecode of the contract.
844    ///
845    /// ```text
846    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051611ae06100f95f395f8181610e1201528181610e3b0152610f830152611ae05ff3fe608060405260043610610195575f3560e01c806391d14854116100e7578063cf21395b11610087578063e1a4521811610062578063e1a4521814610478578063e63ab1e91461048d578063f092e13a146104ad578063f8c8765e146104cb575f5ffd5b8063cf21395b1461042f578063d547741f14610444578063d54ad2a114610463575f5ffd5b8063b20d30a9116100c2578063b20d30a91461038f578063b5700e68146103ae578063ba4bcd72146103e5578063bd83434514610404575f5ffd5b806391d1485414610320578063a217fddf1461033f578063ad3cb1cc14610352575f5ffd5b806336568abe1161015257806352d1902d1161012d57806352d1902d146102b6578063549dd8c3146102ca5780635c975abb146102e95780638456cb591461030c575f5ffd5b806336568abe146102705780633f4ba83a1461028f5780634f1ef286146102a3575f5ffd5b806301ffc9a7146101995780630d8e6e2c146101cd5780630f6ca1d6146101f8578063248a9ca31461021b5780632cca74d81461023a5780632f2ff15d1461024f575b5f5ffd5b3480156101a4575f5ffd5b506101b86101b3366004611638565b6104ea565b60405190151581526020015b60405180910390f35b3480156101d8575f5ffd5b5060408051600181525f60208201819052918101919091526060016101c4565b348015610203575f5ffd5b5061020d60045481565b6040519081526020016101c4565b348015610226575f5ffd5b5061020d61023536600461165f565b610520565b348015610245575f5ffd5b5061020d60035481565b34801561025a575f5ffd5b5061026e610269366004611691565b610540565b005b34801561027b575f5ffd5b5061026e61028a366004611691565b6105a4565b34801561029a575f5ffd5b5061026e6105cc565b61026e6102b1366004611700565b6105ee565b3480156102c1575f5ffd5b5061020d610609565b3480156102d5575f5ffd5b5061026e6102e43660046117a5565b610624565b3480156102f4575f5ffd5b505f516020611a945f395f51905f525460ff166101b8565b348015610317575f5ffd5b5061026e6107c3565b34801561032b575f5ffd5b506101b861033a366004611691565b6107e2565b34801561034a575f5ffd5b5061020d5f81565b34801561035d575f5ffd5b50610382604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101c4919061181c565b34801561039a575f5ffd5b5061026e6103a936600461165f565b610818565b3480156103b9575f5ffd5b506001546103cd906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b3480156103f0575f5ffd5b506007546103cd906001600160a01b031681565b34801561040f575f5ffd5b5061020d61041e366004611851565b60026020525f908152604090205481565b34801561043a575f5ffd5b5061020d6101f481565b34801561044f575f5ffd5b5061026e61045e366004611691565b610997565b34801561046e575f5ffd5b5061020d60085481565b348015610483575f5ffd5b5061020d61271081565b348015610498575f5ffd5b5061020d5f516020611a545f395f51905f5281565b3480156104b8575f5ffd5b505f546103cd906001600160a01b031681565b3480156104d6575f5ffd5b5061026e6104e536600461186a565b6109bf565b5f6001600160e01b03198216637965db0b60e01b148061051a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f9081525f516020611a745f395f51905f52602052604090206001015490565b61054a8282610ccd565b816105a0576007546001600160a01b03908116908216810361056b57505050565b600780546001600160a01b0319166001600160a01b038481169190911790915581161561059e5761059c5f82610ce9565b505b505b5050565b816105c257604051638b78631d60e01b815260040160405180910390fd5b6105a08282610d6b565b5f516020611a545f395f51905f526105e381610d9e565b6105eb610da8565b50565b6105f6610e07565b6105ff82610ead565b6105a08282610eb7565b5f610612610f78565b505f516020611a345f395f51905f5290565b61062c610fc1565b610634610ff1565b825f0361065457604051633853986560e01b815260040160405180910390fd5b335f81815260026020526040902054841161068257604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b0381165f908152600260205260408120546106a490866118cf565b90506106af81611028565b6106ba858585611086565b6106d757604051630651710f60e31b815260040160405180910390fd5b6001600160a01b0382165f908152600260205260408120869055600880548392906107039084906118e2565b90915550505f546040516340c10f1960e01b81526001600160a01b03848116600483015260248201849052909116906340c10f19906044015f604051808303815f87803b158015610752575f5ffd5b505af1158015610764573d5f5f3e3d5ffd5b50505050816001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe826040516107a391815260200190565b60405180910390a2505061059e60015f516020611ab45f395f51905f5255565b5f516020611a545f395f51905f526107da81610d9e565b6105eb6111ac565b5f9182525f516020611a745f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f61082281610d9e565b61082a610ff1565b5f821161084a57604051639b11a8bd60e01b815260040160405180910390fd5b6101f482111561086d5760405163c5d2ae5360e01b815260040160405180910390fd5b5f612710835f5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e591906118f5565b6108ef919061190c565b6108f99190611923565b90505f811161091b57604051639b11a8bd60e01b815260040160405180910390fd5b600354810361093d5760405163a863aec960e01b815260040160405180910390fd5b60035460408051918252602082018390527f207c4cbdf55ec315a13f0d5e047732ec5d947da056e706593aa509909941cedf910160405180910390a160035560048290556105a060015f516020611ab45f395f51905f5255565b816109b55760405163b0b5fb9960e01b815260040160405180910390fd5b6105a082826111f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610a045750825b90505f8267ffffffffffffffff166001148015610a205750303b155b905081158015610a2e575080155b15610a4c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7657845460ff60401b1916600160401b1785555b6001600160a01b038916610a9d57604051633ef39b8160e01b815260040160405180910390fd5b6001600160a01b038716610ac45760405163fcabddbd60e01b815260040160405180910390fd5b6001600160a01b038616610aeb5760405163a74995ab60e01b815260040160405180910390fd5b6001600160a01b038816610b1257604051636b093aad60e01b815260040160405180910390fd5b5f886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7391906118f5565b90505f8111610b95576040516348b5002360e01b815260040160405180910390fd5b60645f612710610ba5838561190c565b610baf9190611923565b90505f8111610bd157604051639b11a8bd60e01b815260040160405180910390fd5b610bd9611210565b610be1611218565b610be9611210565b610bf1611228565b610bfb5f8d611238565b50600780546001600160a01b0319166001600160a01b038e16179055610c2e5f516020611a545f395f51905f528a611238565b505f80546001600160a01b03808e166001600160a01b03199283161790925560018054928d169290911691909117905560038190556004829055610c756201518042611923565b600555505084159050610cc257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610cd682610520565b610cdf81610d9e565b61059c8383611238565b5f5f516020611a745f395f51905f52610d0284846107e2565b15610d62575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061051a565b5f91505061051a565b6001600160a01b0381163314610d945760405163334bd91960e11b815260040160405180910390fd5b61059e8282610ce9565b6105eb81336112d0565b610db0611309565b5f516020611a945f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e8d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e815f516020611a345f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610eab5760405163703e46dd60e11b815260040160405180910390fd5b565b5f6105a081610d9e565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f11575060408051601f3d908101601f19168201909252610f0e918101906118f5565b60015b610f3e57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f516020611a345f395f51905f528114610f6e57604051632a87526960e21b815260048101829052602401610f35565b61059e8383611338565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eab5760405163703e46dd60e11b815260040160405180910390fd5b5f516020611a945f395f51905f525460ff1615610eab5760405163d93c066560e01b815260040160405180910390fd5b5f516020611ab45f395f51905f5280546001190161102257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6110366201518042611923565b9050600554811461104b5760058190555f6006555b8160065f82825461105c91906118e2565b909155505060035460065411156105a057604051630652f4c560e21b815260040160405180910390fd5b5f808061109584860186611983565b915091505f6110a533888561138d565b82516020808501516040808701516060808901516080808b015160a0808d015160c0808f015189519b8c018e9052988b019b909b529489019790975290870193909352938501939093529383019390935260e08201526101008101919091529091505f906101200160408051601f198184030181528282528051602091820120600154631330651d60e31b855292519094506001600160a01b039092169263998328e892600480830193928290030181865afa158015611167573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118b91906118f5565b1493505050505b9392505050565b60015f516020611ab45f395f51905f5255565b6111b4610fc1565b5f516020611a945f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610de9565b6111fd82610520565b61120681610d9e565b61059c8383610ce9565b610eab611402565b611220611402565b610eab61144b565b611230611402565b610eab61146b565b5f5f516020611a745f395f51905f5261125184846107e2565b610d62575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556112863390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061051a565b6112da82826107e2565b6105a05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610f35565b5f516020611a945f395f51905f525460ff16610eab57604051638dfc202b60e01b815260040160405180910390fd5b61134182611473565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156113855761059e82826114d6565b6105a0611548565b5f5f61139884611567565b90505f5b60a08110156113f9575f848260a081106113b8576113b8611a09565b60200201519050600187831c1680156113df575f82815260208590526040902093506113ef565b5f84815260208390526040902093505b505060010161139c565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610eab57604051631afcd79f60e31b815260040160405180910390fd5b611453611402565b5f516020611a945f395f51905f52805460ff19169055565b611199611402565b806001600160a01b03163b5f036114a857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f35565b5f516020611a345f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114f29190611a1d565b5f60405180830381855af49150503d805f811461152a576040519150601f19603f3d011682016040523d82523d5f602084013e61152f565b606091505b509150915061153f8583836115b3565b95945050505050565b3415610eab5760405163b398979f60e01b815260040160405180910390fd5b5f5f8260405160200161157c91815260200190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209392505050565b6060826115c8576115c38261160f565b611192565b81511580156115df57506001600160a01b0384163b155b1561160857604051639996b31560e01b81526001600160a01b0385166004820152602401610f35565b5080611192565b80511561161f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215611648575f5ffd5b81356001600160e01b031981168114611192575f5ffd5b5f6020828403121561166f575f5ffd5b5035919050565b80356001600160a01b038116811461168c575f5ffd5b919050565b5f5f604083850312156116a2575f5ffd5b823591506116b260208401611676565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156116f8576116f86116bb565b604052919050565b5f5f60408385031215611711575f5ffd5b61171a83611676565b9150602083013567ffffffffffffffff811115611735575f5ffd5b8301601f81018513611745575f5ffd5b803567ffffffffffffffff81111561175f5761175f6116bb565b611772601f8201601f19166020016116cf565b818152866020838501011115611786575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f604084860312156117b7575f5ffd5b83359250602084013567ffffffffffffffff8111156117d4575f5ffd5b8401601f810186136117e4575f5ffd5b803567ffffffffffffffff8111156117fa575f5ffd5b86602082840101111561180b575f5ffd5b939660209190910195509293505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611861575f5ffd5b61119282611676565b5f5f5f5f6080858703121561187d575f5ffd5b61188685611676565b935061189460208601611676565b92506118a260408601611676565b91506118b060608601611676565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561051a5761051a6118bb565b8082018082111561051a5761051a6118bb565b5f60208284031215611905575f5ffd5b5051919050565b808202811582820484141761051a5761051a6118bb565b5f8261193d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f61194d60e06116cf565b90508060e0830184811115611960575f5ffd5b835b8181101561197a578035835260209283019201611962565b50505092915050565b5f5f6114e08385031215611995575f5ffd5b5f84601f8501126119a4575f5ffd5b505f806114006119b3816116cf565b92508291508501868111156119c6575f5ffd5b855b818110156119e05780358452602093840193016119c8565b508194508661141f8701126119f3575f5ffd5b6119fd8782611942565b93505050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c634300081c000a
847    /// ```
848    #[rustfmt::skip]
849    #[allow(clippy::all)]
850    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
851        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa\x1A\xE0a\0\xF9_9_\x81\x81a\x0E\x12\x01R\x81\x81a\x0E;\x01Ra\x0F\x83\x01Ra\x1A\xE0_\xF3\xFE`\x80`@R`\x046\x10a\x01\x95W_5`\xE0\x1C\x80c\x91\xD1HT\x11a\0\xE7W\x80c\xCF!9[\x11a\0\x87W\x80c\xE1\xA4R\x18\x11a\0bW\x80c\xE1\xA4R\x18\x14a\x04xW\x80c\xE6:\xB1\xE9\x14a\x04\x8DW\x80c\xF0\x92\xE1:\x14a\x04\xADW\x80c\xF8\xC8v^\x14a\x04\xCBW__\xFD[\x80c\xCF!9[\x14a\x04/W\x80c\xD5Gt\x1F\x14a\x04DW\x80c\xD5J\xD2\xA1\x14a\x04cW__\xFD[\x80c\xB2\r0\xA9\x11a\0\xC2W\x80c\xB2\r0\xA9\x14a\x03\x8FW\x80c\xB5p\x0Eh\x14a\x03\xAEW\x80c\xBAK\xCDr\x14a\x03\xE5W\x80c\xBD\x83CE\x14a\x04\x04W__\xFD[\x80c\x91\xD1HT\x14a\x03 W\x80c\xA2\x17\xFD\xDF\x14a\x03?W\x80c\xAD<\xB1\xCC\x14a\x03RW__\xFD[\x80c6V\x8A\xBE\x11a\x01RW\x80cR\xD1\x90-\x11a\x01-W\x80cR\xD1\x90-\x14a\x02\xB6W\x80cT\x9D\xD8\xC3\x14a\x02\xCAW\x80c\\\x97Z\xBB\x14a\x02\xE9W\x80c\x84V\xCBY\x14a\x03\x0CW__\xFD[\x80c6V\x8A\xBE\x14a\x02pW\x80c?K\xA8:\x14a\x02\x8FW\x80cO\x1E\xF2\x86\x14a\x02\xA3W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01\x99W\x80c\r\x8En,\x14a\x01\xCDW\x80c\x0Fl\xA1\xD6\x14a\x01\xF8W\x80c$\x8A\x9C\xA3\x14a\x02\x1BW\x80c,\xCAt\xD8\x14a\x02:W\x80c//\xF1]\x14a\x02OW[__\xFD[4\x80\x15a\x01\xA4W__\xFD[Pa\x01\xB8a\x01\xB36`\x04a\x168V[a\x04\xEAV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD8W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xC4V[4\x80\x15a\x02\x03W__\xFD[Pa\x02\r`\x04T\x81V[`@Q\x90\x81R` \x01a\x01\xC4V[4\x80\x15a\x02&W__\xFD[Pa\x02\ra\x0256`\x04a\x16_V[a\x05 V[4\x80\x15a\x02EW__\xFD[Pa\x02\r`\x03T\x81V[4\x80\x15a\x02ZW__\xFD[Pa\x02na\x02i6`\x04a\x16\x91V[a\x05@V[\0[4\x80\x15a\x02{W__\xFD[Pa\x02na\x02\x8A6`\x04a\x16\x91V[a\x05\xA4V[4\x80\x15a\x02\x9AW__\xFD[Pa\x02na\x05\xCCV[a\x02na\x02\xB16`\x04a\x17\0V[a\x05\xEEV[4\x80\x15a\x02\xC1W__\xFD[Pa\x02\ra\x06\tV[4\x80\x15a\x02\xD5W__\xFD[Pa\x02na\x02\xE46`\x04a\x17\xA5V[a\x06$V[4\x80\x15a\x02\xF4W__\xFD[P_Q` a\x1A\x94_9_Q\x90_RT`\xFF\x16a\x01\xB8V[4\x80\x15a\x03\x17W__\xFD[Pa\x02na\x07\xC3V[4\x80\x15a\x03+W__\xFD[Pa\x01\xB8a\x03:6`\x04a\x16\x91V[a\x07\xE2V[4\x80\x15a\x03JW__\xFD[Pa\x02\r_\x81V[4\x80\x15a\x03]W__\xFD[Pa\x03\x82`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xC4\x91\x90a\x18\x1CV[4\x80\x15a\x03\x9AW__\xFD[Pa\x02na\x03\xA96`\x04a\x16_V[a\x08\x18V[4\x80\x15a\x03\xB9W__\xFD[P`\x01Ta\x03\xCD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xC4V[4\x80\x15a\x03\xF0W__\xFD[P`\x07Ta\x03\xCD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x0FW__\xFD[Pa\x02\ra\x04\x1E6`\x04a\x18QV[`\x02` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04:W__\xFD[Pa\x02\ra\x01\xF4\x81V[4\x80\x15a\x04OW__\xFD[Pa\x02na\x04^6`\x04a\x16\x91V[a\t\x97V[4\x80\x15a\x04nW__\xFD[Pa\x02\r`\x08T\x81V[4\x80\x15a\x04\x83W__\xFD[Pa\x02\ra'\x10\x81V[4\x80\x15a\x04\x98W__\xFD[Pa\x02\r_Q` a\x1AT_9_Q\x90_R\x81V[4\x80\x15a\x04\xB8W__\xFD[P_Ta\x03\xCD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xD6W__\xFD[Pa\x02na\x04\xE56`\x04a\x18jV[a\t\xBFV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x05\x1AWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[_\x90\x81R_Q` a\x1At_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x05J\x82\x82a\x0C\xCDV[\x81a\x05\xA0W`\x07T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x81\x03a\x05kWPPPV[`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16\x15a\x05\x9EWa\x05\x9C_\x82a\x0C\xE9V[P[P[PPV[\x81a\x05\xC2W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xA0\x82\x82a\rkV[_Q` a\x1AT_9_Q\x90_Ra\x05\xE3\x81a\r\x9EV[a\x05\xEBa\r\xA8V[PV[a\x05\xF6a\x0E\x07V[a\x05\xFF\x82a\x0E\xADV[a\x05\xA0\x82\x82a\x0E\xB7V[_a\x06\x12a\x0FxV[P_Q` a\x1A4_9_Q\x90_R\x90V[a\x06,a\x0F\xC1V[a\x064a\x0F\xF1V[\x82_\x03a\x06TW`@Qc8S\x98e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3_\x81\x81R`\x02` R`@\x90 T\x84\x11a\x06\x82W`@Qc\x0C\x8D\x9E\xAB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x02` R`@\x81 Ta\x06\xA4\x90\x86a\x18\xCFV[\x90Pa\x06\xAF\x81a\x10(V[a\x06\xBA\x85\x85\x85a\x10\x86V[a\x06\xD7W`@Qc\x06Qq\x0F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x02` R`@\x81 \x86\x90U`\x08\x80T\x83\x92\x90a\x07\x03\x90\x84\x90a\x18\xE2V[\x90\x91UPP_T`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`$\x82\x01\x84\x90R\x90\x91\x16\x90c@\xC1\x0F\x19\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07RW__\xFD[PZ\xF1\x15\x80\x15a\x07dW=__>=_\xFD[PPPP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFC0\xCD\xDE\xA3\x8E+\xF4\xD6\xEA}?\x9E\xD3\xB6\xAD\x7F\x17d\x19\xF4\x96;\xD8\x13\x18\x06zJ\xEEs\xFE\x82`@Qa\x07\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPa\x05\x9E`\x01_Q` a\x1A\xB4_9_Q\x90_RUV[_Q` a\x1AT_9_Q\x90_Ra\x07\xDA\x81a\r\x9EV[a\x05\xEBa\x11\xACV[_\x91\x82R_Q` a\x1At_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_a\x08\"\x81a\r\x9EV[a\x08*a\x0F\xF1V[_\x82\x11a\x08JW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xF4\x82\x11\x15a\x08mW`@Qc\xC5\xD2\xAES`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a'\x10\x83__\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x18\x16\r\xDD`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xC1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xE5\x91\x90a\x18\xF5V[a\x08\xEF\x91\x90a\x19\x0CV[a\x08\xF9\x91\x90a\x19#V[\x90P_\x81\x11a\t\x1BW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03T\x81\x03a\t=W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03T`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F |L\xBD\xF5^\xC3\x15\xA1?\r^\x04w2\xEC]\x94}\xA0V\xE7\x06Y:\xA5\t\x90\x99A\xCE\xDF\x91\x01`@Q\x80\x91\x03\x90\xA1`\x03U`\x04\x82\x90Ua\x05\xA0`\x01_Q` a\x1A\xB4_9_Q\x90_RUV[\x81a\t\xB5W`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xA0\x82\x82a\x11\xF4V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\n\x04WP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\n WP0;\x15[\x90P\x81\x15\x80\x15a\n.WP\x80\x15[\x15a\nLW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\nvW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[`\x01`\x01`\xA0\x1B\x03\x89\x16a\n\x9DW`@Qc>\xF3\x9B\x81`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\n\xC4W`@Qc\xFC\xAB\xDD\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x16a\n\xEBW`@Qc\xA7I\x95\xAB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x88\x16a\x0B\x12W`@Qck\t:\xAD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x88`\x01`\x01`\xA0\x1B\x03\x16c\x18\x16\r\xDD`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0BOW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Bs\x91\x90a\x18\xF5V[\x90P_\x81\x11a\x0B\x95W`@QcH\xB5\0#`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`d_a'\x10a\x0B\xA5\x83\x85a\x19\x0CV[a\x0B\xAF\x91\x90a\x19#V[\x90P_\x81\x11a\x0B\xD1W`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xD9a\x12\x10V[a\x0B\xE1a\x12\x18V[a\x0B\xE9a\x12\x10V[a\x0B\xF1a\x12(V[a\x0B\xFB_\x8Da\x128V[P`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x8E\x16\x17\x90Ua\x0C._Q` a\x1AT_9_Q\x90_R\x8Aa\x128V[P_\x80T`\x01`\x01`\xA0\x1B\x03\x80\x8E\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x8D\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90U`\x03\x81\x90U`\x04\x82\x90Ua\x0Cub\x01Q\x80Ba\x19#V[`\x05UPP\x84\x15\x90Pa\x0C\xC2W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0C\xD6\x82a\x05 V[a\x0C\xDF\x81a\r\x9EV[a\x05\x9C\x83\x83a\x128V[__Q` a\x1At_9_Q\x90_Ra\r\x02\x84\x84a\x07\xE2V[\x15a\rbW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x05\x1AV[_\x91PPa\x05\x1AV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\r\x94W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\x9E\x82\x82a\x0C\xE9V[a\x05\xEB\x813a\x12\xD0V[a\r\xB0a\x13\tV[_Q` a\x1A\x94_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x0E\x8DWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x0E\x81_Q` a\x1A4_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0E\xABW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[_a\x05\xA0\x81a\r\x9EV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x0F\x11WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x0F\x0E\x91\x81\x01\x90a\x18\xF5V[`\x01[a\x0F>W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[_Q` a\x1A4_9_Q\x90_R\x81\x14a\x0FnW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F5V[a\x05\x9E\x83\x83a\x138V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0E\xABW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` a\x1A\x94_9_Q\x90_RT`\xFF\x16\x15a\x0E\xABW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` a\x1A\xB4_9_Q\x90_R\x80T`\x01\x19\x01a\x10\"W`@Qc>\xE5\xAE\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x90UV[_a\x106b\x01Q\x80Ba\x19#V[\x90P`\x05T\x81\x14a\x10KW`\x05\x81\x90U_`\x06U[\x81`\x06_\x82\x82Ta\x10\\\x91\x90a\x18\xE2V[\x90\x91UPP`\x03T`\x06T\x11\x15a\x05\xA0W`@Qc\x06R\xF4\xC5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x10\x95\x84\x86\x01\x86a\x19\x83V[\x91P\x91P_a\x10\xA53\x88\x85a\x13\x8DV[\x82Q` \x80\x85\x01Q`@\x80\x87\x01Q``\x80\x89\x01Q`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`\xC0\x80\x8F\x01Q\x89Q\x9B\x8C\x01\x8E\x90R\x98\x8B\x01\x9B\x90\x9BR\x94\x89\x01\x97\x90\x97R\x90\x87\x01\x93\x90\x93R\x93\x85\x01\x93\x90\x93R\x93\x83\x01\x93\x90\x93R`\xE0\x82\x01Ra\x01\0\x81\x01\x91\x90\x91R\x90\x91P_\x90a\x01 \x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x01Tc\x130e\x1D`\xE3\x1B\x85R\x92Q\x90\x94P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x92c\x99\x83(\xE8\x92`\x04\x80\x83\x01\x93\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x11gW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a\x18\xF5V[\x14\x93PPPP[\x93\x92PPPV[`\x01_Q` a\x1A\xB4_9_Q\x90_RUV[a\x11\xB4a\x0F\xC1V[_Q` a\x1A\x94_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\r\xE9V[a\x11\xFD\x82a\x05 V[a\x12\x06\x81a\r\x9EV[a\x05\x9C\x83\x83a\x0C\xE9V[a\x0E\xABa\x14\x02V[a\x12 a\x14\x02V[a\x0E\xABa\x14KV[a\x120a\x14\x02V[a\x0E\xABa\x14kV[__Q` a\x1At_9_Q\x90_Ra\x12Q\x84\x84a\x07\xE2V[a\rbW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x12\x863\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x05\x1AV[a\x12\xDA\x82\x82a\x07\xE2V[a\x05\xA0W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0F5V[_Q` a\x1A\x94_9_Q\x90_RT`\xFF\x16a\x0E\xABW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13A\x82a\x14sV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x13\x85Wa\x05\x9E\x82\x82a\x14\xD6V[a\x05\xA0a\x15HV[__a\x13\x98\x84a\x15gV[\x90P_[`\xA0\x81\x10\x15a\x13\xF9W_\x84\x82`\xA0\x81\x10a\x13\xB8Wa\x13\xB8a\x1A\tV[` \x02\x01Q\x90P`\x01\x87\x83\x1C\x16\x80\x15a\x13\xDFW_\x82\x81R` \x85\x90R`@\x90 \x93Pa\x13\xEFV[_\x84\x81R` \x83\x90R`@\x90 \x93P[PP`\x01\x01a\x13\x9CV[P\x94\x93PPPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x0E\xABW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14Sa\x14\x02V[_Q` a\x1A\x94_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a\x11\x99a\x14\x02V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x14\xA8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0F5V[_Q` a\x1A4_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x14\xF2\x91\x90a\x1A\x1DV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x15*W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15/V[``\x91P[P\x91P\x91Pa\x15?\x85\x83\x83a\x15\xB3V[\x95\x94PPPPPV[4\x15a\x0E\xABW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__\x82`@Q` \x01a\x15|\x91\x81R` \x01\x90V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01R\x81Q\x80\x84\x03\x82\x01\x81R\x92\x82\x01\x90\x91R\x81Q\x91\x01 \x93\x92PPPV[``\x82a\x15\xC8Wa\x15\xC3\x82a\x16\x0FV[a\x11\x92V[\x81Q\x15\x80\x15a\x15\xDFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x16\x08W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0F5V[P\x80a\x11\x92V[\x80Q\x15a\x16\x1FW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a\x16HW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x11\x92W__\xFD[_` \x82\x84\x03\x12\x15a\x16oW__\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x16\x8CW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x16\xA2W__\xFD[\x825\x91Pa\x16\xB2` \x84\x01a\x16vV[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x16\xF8Wa\x16\xF8a\x16\xBBV[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x17\x11W__\xFD[a\x17\x1A\x83a\x16vV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x175W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x17EW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17_Wa\x17_a\x16\xBBV[a\x17r`\x1F\x82\x01`\x1F\x19\x16` \x01a\x16\xCFV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x17\x86W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15a\x17\xB7W__\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\xD4W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x17\xE4W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\xFAW__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x18\x0BW__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x18aW__\xFD[a\x11\x92\x82a\x16vV[____`\x80\x85\x87\x03\x12\x15a\x18}W__\xFD[a\x18\x86\x85a\x16vV[\x93Pa\x18\x94` \x86\x01a\x16vV[\x92Pa\x18\xA2`@\x86\x01a\x16vV[\x91Pa\x18\xB0``\x86\x01a\x16vV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x05\x1AWa\x05\x1Aa\x18\xBBV[\x80\x82\x01\x80\x82\x11\x15a\x05\x1AWa\x05\x1Aa\x18\xBBV[_` \x82\x84\x03\x12\x15a\x19\x05W__\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x05\x1AWa\x05\x1Aa\x18\xBBV[_\x82a\x19=WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[_a\x19M`\xE0a\x16\xCFV[\x90P\x80`\xE0\x83\x01\x84\x81\x11\x15a\x19`W__\xFD[\x83[\x81\x81\x10\x15a\x19zW\x805\x83R` \x92\x83\x01\x92\x01a\x19bV[PPP\x92\x91PPV[__a\x14\xE0\x83\x85\x03\x12\x15a\x19\x95W__\xFD[_\x84`\x1F\x85\x01\x12a\x19\xA4W__\xFD[P_\x80a\x14\0a\x19\xB3\x81a\x16\xCFV[\x92P\x82\x91P\x85\x01\x86\x81\x11\x15a\x19\xC6W__\xFD[\x85[\x81\x81\x10\x15a\x19\xE0W\x805\x84R` \x93\x84\x01\x93\x01a\x19\xC8V[P\x81\x94P\x86a\x14\x1F\x87\x01\x12a\x19\xF3W__\xFD[a\x19\xFD\x87\x82a\x19BV[\x93PPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\xA1dsolcC\0\x08\x1C\0\n",
852    );
853    /// The runtime bytecode of the contract, as deployed on the network.
854    ///
855    /// ```text
856    ///0x608060405260043610610195575f3560e01c806391d14854116100e7578063cf21395b11610087578063e1a4521811610062578063e1a4521814610478578063e63ab1e91461048d578063f092e13a146104ad578063f8c8765e146104cb575f5ffd5b8063cf21395b1461042f578063d547741f14610444578063d54ad2a114610463575f5ffd5b8063b20d30a9116100c2578063b20d30a91461038f578063b5700e68146103ae578063ba4bcd72146103e5578063bd83434514610404575f5ffd5b806391d1485414610320578063a217fddf1461033f578063ad3cb1cc14610352575f5ffd5b806336568abe1161015257806352d1902d1161012d57806352d1902d146102b6578063549dd8c3146102ca5780635c975abb146102e95780638456cb591461030c575f5ffd5b806336568abe146102705780633f4ba83a1461028f5780634f1ef286146102a3575f5ffd5b806301ffc9a7146101995780630d8e6e2c146101cd5780630f6ca1d6146101f8578063248a9ca31461021b5780632cca74d81461023a5780632f2ff15d1461024f575b5f5ffd5b3480156101a4575f5ffd5b506101b86101b3366004611638565b6104ea565b60405190151581526020015b60405180910390f35b3480156101d8575f5ffd5b5060408051600181525f60208201819052918101919091526060016101c4565b348015610203575f5ffd5b5061020d60045481565b6040519081526020016101c4565b348015610226575f5ffd5b5061020d61023536600461165f565b610520565b348015610245575f5ffd5b5061020d60035481565b34801561025a575f5ffd5b5061026e610269366004611691565b610540565b005b34801561027b575f5ffd5b5061026e61028a366004611691565b6105a4565b34801561029a575f5ffd5b5061026e6105cc565b61026e6102b1366004611700565b6105ee565b3480156102c1575f5ffd5b5061020d610609565b3480156102d5575f5ffd5b5061026e6102e43660046117a5565b610624565b3480156102f4575f5ffd5b505f516020611a945f395f51905f525460ff166101b8565b348015610317575f5ffd5b5061026e6107c3565b34801561032b575f5ffd5b506101b861033a366004611691565b6107e2565b34801561034a575f5ffd5b5061020d5f81565b34801561035d575f5ffd5b50610382604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101c4919061181c565b34801561039a575f5ffd5b5061026e6103a936600461165f565b610818565b3480156103b9575f5ffd5b506001546103cd906001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b3480156103f0575f5ffd5b506007546103cd906001600160a01b031681565b34801561040f575f5ffd5b5061020d61041e366004611851565b60026020525f908152604090205481565b34801561043a575f5ffd5b5061020d6101f481565b34801561044f575f5ffd5b5061026e61045e366004611691565b610997565b34801561046e575f5ffd5b5061020d60085481565b348015610483575f5ffd5b5061020d61271081565b348015610498575f5ffd5b5061020d5f516020611a545f395f51905f5281565b3480156104b8575f5ffd5b505f546103cd906001600160a01b031681565b3480156104d6575f5ffd5b5061026e6104e536600461186a565b6109bf565b5f6001600160e01b03198216637965db0b60e01b148061051a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f9081525f516020611a745f395f51905f52602052604090206001015490565b61054a8282610ccd565b816105a0576007546001600160a01b03908116908216810361056b57505050565b600780546001600160a01b0319166001600160a01b038481169190911790915581161561059e5761059c5f82610ce9565b505b505b5050565b816105c257604051638b78631d60e01b815260040160405180910390fd5b6105a08282610d6b565b5f516020611a545f395f51905f526105e381610d9e565b6105eb610da8565b50565b6105f6610e07565b6105ff82610ead565b6105a08282610eb7565b5f610612610f78565b505f516020611a345f395f51905f5290565b61062c610fc1565b610634610ff1565b825f0361065457604051633853986560e01b815260040160405180910390fd5b335f81815260026020526040902054841161068257604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b0381165f908152600260205260408120546106a490866118cf565b90506106af81611028565b6106ba858585611086565b6106d757604051630651710f60e31b815260040160405180910390fd5b6001600160a01b0382165f908152600260205260408120869055600880548392906107039084906118e2565b90915550505f546040516340c10f1960e01b81526001600160a01b03848116600483015260248201849052909116906340c10f19906044015f604051808303815f87803b158015610752575f5ffd5b505af1158015610764573d5f5f3e3d5ffd5b50505050816001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe826040516107a391815260200190565b60405180910390a2505061059e60015f516020611ab45f395f51905f5255565b5f516020611a545f395f51905f526107da81610d9e565b6105eb6111ac565b5f9182525f516020611a745f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f61082281610d9e565b61082a610ff1565b5f821161084a57604051639b11a8bd60e01b815260040160405180910390fd5b6101f482111561086d5760405163c5d2ae5360e01b815260040160405180910390fd5b5f612710835f5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e591906118f5565b6108ef919061190c565b6108f99190611923565b90505f811161091b57604051639b11a8bd60e01b815260040160405180910390fd5b600354810361093d5760405163a863aec960e01b815260040160405180910390fd5b60035460408051918252602082018390527f207c4cbdf55ec315a13f0d5e047732ec5d947da056e706593aa509909941cedf910160405180910390a160035560048290556105a060015f516020611ab45f395f51905f5255565b816109b55760405163b0b5fb9960e01b815260040160405180910390fd5b6105a082826111f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610a045750825b90505f8267ffffffffffffffff166001148015610a205750303b155b905081158015610a2e575080155b15610a4c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7657845460ff60401b1916600160401b1785555b6001600160a01b038916610a9d57604051633ef39b8160e01b815260040160405180910390fd5b6001600160a01b038716610ac45760405163fcabddbd60e01b815260040160405180910390fd5b6001600160a01b038616610aeb5760405163a74995ab60e01b815260040160405180910390fd5b6001600160a01b038816610b1257604051636b093aad60e01b815260040160405180910390fd5b5f886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7391906118f5565b90505f8111610b95576040516348b5002360e01b815260040160405180910390fd5b60645f612710610ba5838561190c565b610baf9190611923565b90505f8111610bd157604051639b11a8bd60e01b815260040160405180910390fd5b610bd9611210565b610be1611218565b610be9611210565b610bf1611228565b610bfb5f8d611238565b50600780546001600160a01b0319166001600160a01b038e16179055610c2e5f516020611a545f395f51905f528a611238565b505f80546001600160a01b03808e166001600160a01b03199283161790925560018054928d169290911691909117905560038190556004829055610c756201518042611923565b600555505084159050610cc257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610cd682610520565b610cdf81610d9e565b61059c8383611238565b5f5f516020611a745f395f51905f52610d0284846107e2565b15610d62575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061051a565b5f91505061051a565b6001600160a01b0381163314610d945760405163334bd91960e11b815260040160405180910390fd5b61059e8282610ce9565b6105eb81336112d0565b610db0611309565b5f516020611a945f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e8d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e815f516020611a345f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610eab5760405163703e46dd60e11b815260040160405180910390fd5b565b5f6105a081610d9e565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f11575060408051601f3d908101601f19168201909252610f0e918101906118f5565b60015b610f3e57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f516020611a345f395f51905f528114610f6e57604051632a87526960e21b815260048101829052602401610f35565b61059e8383611338565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eab5760405163703e46dd60e11b815260040160405180910390fd5b5f516020611a945f395f51905f525460ff1615610eab5760405163d93c066560e01b815260040160405180910390fd5b5f516020611ab45f395f51905f5280546001190161102257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6110366201518042611923565b9050600554811461104b5760058190555f6006555b8160065f82825461105c91906118e2565b909155505060035460065411156105a057604051630652f4c560e21b815260040160405180910390fd5b5f808061109584860186611983565b915091505f6110a533888561138d565b82516020808501516040808701516060808901516080808b015160a0808d015160c0808f015189519b8c018e9052988b019b909b529489019790975290870193909352938501939093529383019390935260e08201526101008101919091529091505f906101200160408051601f198184030181528282528051602091820120600154631330651d60e31b855292519094506001600160a01b039092169263998328e892600480830193928290030181865afa158015611167573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118b91906118f5565b1493505050505b9392505050565b60015f516020611ab45f395f51905f5255565b6111b4610fc1565b5f516020611a945f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610de9565b6111fd82610520565b61120681610d9e565b61059c8383610ce9565b610eab611402565b611220611402565b610eab61144b565b611230611402565b610eab61146b565b5f5f516020611a745f395f51905f5261125184846107e2565b610d62575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556112863390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061051a565b6112da82826107e2565b6105a05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610f35565b5f516020611a945f395f51905f525460ff16610eab57604051638dfc202b60e01b815260040160405180910390fd5b61134182611473565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156113855761059e82826114d6565b6105a0611548565b5f5f61139884611567565b90505f5b60a08110156113f9575f848260a081106113b8576113b8611a09565b60200201519050600187831c1680156113df575f82815260208590526040902093506113ef565b5f84815260208390526040902093505b505060010161139c565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610eab57604051631afcd79f60e31b815260040160405180910390fd5b611453611402565b5f516020611a945f395f51905f52805460ff19169055565b611199611402565b806001600160a01b03163b5f036114a857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f35565b5f516020611a345f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114f29190611a1d565b5f60405180830381855af49150503d805f811461152a576040519150601f19603f3d011682016040523d82523d5f602084013e61152f565b606091505b509150915061153f8583836115b3565b95945050505050565b3415610eab5760405163b398979f60e01b815260040160405180910390fd5b5f5f8260405160200161157c91815260200190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209392505050565b6060826115c8576115c38261160f565b611192565b81511580156115df57506001600160a01b0384163b155b1561160857604051639996b31560e01b81526001600160a01b0385166004820152602401610f35565b5080611192565b80511561161f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f60208284031215611648575f5ffd5b81356001600160e01b031981168114611192575f5ffd5b5f6020828403121561166f575f5ffd5b5035919050565b80356001600160a01b038116811461168c575f5ffd5b919050565b5f5f604083850312156116a2575f5ffd5b823591506116b260208401611676565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156116f8576116f86116bb565b604052919050565b5f5f60408385031215611711575f5ffd5b61171a83611676565b9150602083013567ffffffffffffffff811115611735575f5ffd5b8301601f81018513611745575f5ffd5b803567ffffffffffffffff81111561175f5761175f6116bb565b611772601f8201601f19166020016116cf565b818152866020838501011115611786575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f604084860312156117b7575f5ffd5b83359250602084013567ffffffffffffffff8111156117d4575f5ffd5b8401601f810186136117e4575f5ffd5b803567ffffffffffffffff8111156117fa575f5ffd5b86602082840101111561180b575f5ffd5b939660209190910195509293505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611861575f5ffd5b61119282611676565b5f5f5f5f6080858703121561187d575f5ffd5b61188685611676565b935061189460208601611676565b92506118a260408601611676565b91506118b060608601611676565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561051a5761051a6118bb565b8082018082111561051a5761051a6118bb565b5f60208284031215611905575f5ffd5b5051919050565b808202811582820484141761051a5761051a6118bb565b5f8261193d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f61194d60e06116cf565b90508060e0830184811115611960575f5ffd5b835b8181101561197a578035835260209283019201611962565b50505092915050565b5f5f6114e08385031215611995575f5ffd5b5f84601f8501126119a4575f5ffd5b505f806114006119b3816116cf565b92508291508501868111156119c6575f5ffd5b855b818110156119e05780358452602093840193016119c8565b508194508661141f8701126119f3575f5ffd5b6119fd8782611942565b93505050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c634300081c000a
857    /// ```
858    #[rustfmt::skip]
859    #[allow(clippy::all)]
860    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
861        b"`\x80`@R`\x046\x10a\x01\x95W_5`\xE0\x1C\x80c\x91\xD1HT\x11a\0\xE7W\x80c\xCF!9[\x11a\0\x87W\x80c\xE1\xA4R\x18\x11a\0bW\x80c\xE1\xA4R\x18\x14a\x04xW\x80c\xE6:\xB1\xE9\x14a\x04\x8DW\x80c\xF0\x92\xE1:\x14a\x04\xADW\x80c\xF8\xC8v^\x14a\x04\xCBW__\xFD[\x80c\xCF!9[\x14a\x04/W\x80c\xD5Gt\x1F\x14a\x04DW\x80c\xD5J\xD2\xA1\x14a\x04cW__\xFD[\x80c\xB2\r0\xA9\x11a\0\xC2W\x80c\xB2\r0\xA9\x14a\x03\x8FW\x80c\xB5p\x0Eh\x14a\x03\xAEW\x80c\xBAK\xCDr\x14a\x03\xE5W\x80c\xBD\x83CE\x14a\x04\x04W__\xFD[\x80c\x91\xD1HT\x14a\x03 W\x80c\xA2\x17\xFD\xDF\x14a\x03?W\x80c\xAD<\xB1\xCC\x14a\x03RW__\xFD[\x80c6V\x8A\xBE\x11a\x01RW\x80cR\xD1\x90-\x11a\x01-W\x80cR\xD1\x90-\x14a\x02\xB6W\x80cT\x9D\xD8\xC3\x14a\x02\xCAW\x80c\\\x97Z\xBB\x14a\x02\xE9W\x80c\x84V\xCBY\x14a\x03\x0CW__\xFD[\x80c6V\x8A\xBE\x14a\x02pW\x80c?K\xA8:\x14a\x02\x8FW\x80cO\x1E\xF2\x86\x14a\x02\xA3W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01\x99W\x80c\r\x8En,\x14a\x01\xCDW\x80c\x0Fl\xA1\xD6\x14a\x01\xF8W\x80c$\x8A\x9C\xA3\x14a\x02\x1BW\x80c,\xCAt\xD8\x14a\x02:W\x80c//\xF1]\x14a\x02OW[__\xFD[4\x80\x15a\x01\xA4W__\xFD[Pa\x01\xB8a\x01\xB36`\x04a\x168V[a\x04\xEAV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD8W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xC4V[4\x80\x15a\x02\x03W__\xFD[Pa\x02\r`\x04T\x81V[`@Q\x90\x81R` \x01a\x01\xC4V[4\x80\x15a\x02&W__\xFD[Pa\x02\ra\x0256`\x04a\x16_V[a\x05 V[4\x80\x15a\x02EW__\xFD[Pa\x02\r`\x03T\x81V[4\x80\x15a\x02ZW__\xFD[Pa\x02na\x02i6`\x04a\x16\x91V[a\x05@V[\0[4\x80\x15a\x02{W__\xFD[Pa\x02na\x02\x8A6`\x04a\x16\x91V[a\x05\xA4V[4\x80\x15a\x02\x9AW__\xFD[Pa\x02na\x05\xCCV[a\x02na\x02\xB16`\x04a\x17\0V[a\x05\xEEV[4\x80\x15a\x02\xC1W__\xFD[Pa\x02\ra\x06\tV[4\x80\x15a\x02\xD5W__\xFD[Pa\x02na\x02\xE46`\x04a\x17\xA5V[a\x06$V[4\x80\x15a\x02\xF4W__\xFD[P_Q` a\x1A\x94_9_Q\x90_RT`\xFF\x16a\x01\xB8V[4\x80\x15a\x03\x17W__\xFD[Pa\x02na\x07\xC3V[4\x80\x15a\x03+W__\xFD[Pa\x01\xB8a\x03:6`\x04a\x16\x91V[a\x07\xE2V[4\x80\x15a\x03JW__\xFD[Pa\x02\r_\x81V[4\x80\x15a\x03]W__\xFD[Pa\x03\x82`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xC4\x91\x90a\x18\x1CV[4\x80\x15a\x03\x9AW__\xFD[Pa\x02na\x03\xA96`\x04a\x16_V[a\x08\x18V[4\x80\x15a\x03\xB9W__\xFD[P`\x01Ta\x03\xCD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xC4V[4\x80\x15a\x03\xF0W__\xFD[P`\x07Ta\x03\xCD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\x0FW__\xFD[Pa\x02\ra\x04\x1E6`\x04a\x18QV[`\x02` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04:W__\xFD[Pa\x02\ra\x01\xF4\x81V[4\x80\x15a\x04OW__\xFD[Pa\x02na\x04^6`\x04a\x16\x91V[a\t\x97V[4\x80\x15a\x04nW__\xFD[Pa\x02\r`\x08T\x81V[4\x80\x15a\x04\x83W__\xFD[Pa\x02\ra'\x10\x81V[4\x80\x15a\x04\x98W__\xFD[Pa\x02\r_Q` a\x1AT_9_Q\x90_R\x81V[4\x80\x15a\x04\xB8W__\xFD[P_Ta\x03\xCD\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04\xD6W__\xFD[Pa\x02na\x04\xE56`\x04a\x18jV[a\t\xBFV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x05\x1AWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[_\x90\x81R_Q` a\x1At_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x05J\x82\x82a\x0C\xCDV[\x81a\x05\xA0W`\x07T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x81\x03a\x05kWPPPV[`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16\x15a\x05\x9EWa\x05\x9C_\x82a\x0C\xE9V[P[P[PPV[\x81a\x05\xC2W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xA0\x82\x82a\rkV[_Q` a\x1AT_9_Q\x90_Ra\x05\xE3\x81a\r\x9EV[a\x05\xEBa\r\xA8V[PV[a\x05\xF6a\x0E\x07V[a\x05\xFF\x82a\x0E\xADV[a\x05\xA0\x82\x82a\x0E\xB7V[_a\x06\x12a\x0FxV[P_Q` a\x1A4_9_Q\x90_R\x90V[a\x06,a\x0F\xC1V[a\x064a\x0F\xF1V[\x82_\x03a\x06TW`@Qc8S\x98e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3_\x81\x81R`\x02` R`@\x90 T\x84\x11a\x06\x82W`@Qc\x0C\x8D\x9E\xAB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x02` R`@\x81 Ta\x06\xA4\x90\x86a\x18\xCFV[\x90Pa\x06\xAF\x81a\x10(V[a\x06\xBA\x85\x85\x85a\x10\x86V[a\x06\xD7W`@Qc\x06Qq\x0F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x02` R`@\x81 \x86\x90U`\x08\x80T\x83\x92\x90a\x07\x03\x90\x84\x90a\x18\xE2V[\x90\x91UPP_T`@Qc@\xC1\x0F\x19`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`$\x82\x01\x84\x90R\x90\x91\x16\x90c@\xC1\x0F\x19\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07RW__\xFD[PZ\xF1\x15\x80\x15a\x07dW=__>=_\xFD[PPPP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFC0\xCD\xDE\xA3\x8E+\xF4\xD6\xEA}?\x9E\xD3\xB6\xAD\x7F\x17d\x19\xF4\x96;\xD8\x13\x18\x06zJ\xEEs\xFE\x82`@Qa\x07\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPa\x05\x9E`\x01_Q` a\x1A\xB4_9_Q\x90_RUV[_Q` a\x1AT_9_Q\x90_Ra\x07\xDA\x81a\r\x9EV[a\x05\xEBa\x11\xACV[_\x91\x82R_Q` a\x1At_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_a\x08\"\x81a\r\x9EV[a\x08*a\x0F\xF1V[_\x82\x11a\x08JW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xF4\x82\x11\x15a\x08mW`@Qc\xC5\xD2\xAES`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a'\x10\x83__\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16c\x18\x16\r\xDD`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\xC1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xE5\x91\x90a\x18\xF5V[a\x08\xEF\x91\x90a\x19\x0CV[a\x08\xF9\x91\x90a\x19#V[\x90P_\x81\x11a\t\x1BW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03T\x81\x03a\t=W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03T`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F |L\xBD\xF5^\xC3\x15\xA1?\r^\x04w2\xEC]\x94}\xA0V\xE7\x06Y:\xA5\t\x90\x99A\xCE\xDF\x91\x01`@Q\x80\x91\x03\x90\xA1`\x03U`\x04\x82\x90Ua\x05\xA0`\x01_Q` a\x1A\xB4_9_Q\x90_RUV[\x81a\t\xB5W`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xA0\x82\x82a\x11\xF4V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\n\x04WP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\n WP0;\x15[\x90P\x81\x15\x80\x15a\n.WP\x80\x15[\x15a\nLW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\nvW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[`\x01`\x01`\xA0\x1B\x03\x89\x16a\n\x9DW`@Qc>\xF3\x9B\x81`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\n\xC4W`@Qc\xFC\xAB\xDD\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x16a\n\xEBW`@Qc\xA7I\x95\xAB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x88\x16a\x0B\x12W`@Qck\t:\xAD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x88`\x01`\x01`\xA0\x1B\x03\x16c\x18\x16\r\xDD`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0BOW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0Bs\x91\x90a\x18\xF5V[\x90P_\x81\x11a\x0B\x95W`@QcH\xB5\0#`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`d_a'\x10a\x0B\xA5\x83\x85a\x19\x0CV[a\x0B\xAF\x91\x90a\x19#V[\x90P_\x81\x11a\x0B\xD1W`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xD9a\x12\x10V[a\x0B\xE1a\x12\x18V[a\x0B\xE9a\x12\x10V[a\x0B\xF1a\x12(V[a\x0B\xFB_\x8Da\x128V[P`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x8E\x16\x17\x90Ua\x0C._Q` a\x1AT_9_Q\x90_R\x8Aa\x128V[P_\x80T`\x01`\x01`\xA0\x1B\x03\x80\x8E\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x8D\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90U`\x03\x81\x90U`\x04\x82\x90Ua\x0Cub\x01Q\x80Ba\x19#V[`\x05UPP\x84\x15\x90Pa\x0C\xC2W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x0C\xD6\x82a\x05 V[a\x0C\xDF\x81a\r\x9EV[a\x05\x9C\x83\x83a\x128V[__Q` a\x1At_9_Q\x90_Ra\r\x02\x84\x84a\x07\xE2V[\x15a\rbW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x05\x1AV[_\x91PPa\x05\x1AV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\r\x94W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\x9E\x82\x82a\x0C\xE9V[a\x05\xEB\x813a\x12\xD0V[a\r\xB0a\x13\tV[_Q` a\x1A\x94_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x0E\x8DWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x0E\x81_Q` a\x1A4_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0E\xABW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[_a\x05\xA0\x81a\r\x9EV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x0F\x11WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x0F\x0E\x91\x81\x01\x90a\x18\xF5V[`\x01[a\x0F>W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[_Q` a\x1A4_9_Q\x90_R\x81\x14a\x0FnW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0F5V[a\x05\x9E\x83\x83a\x138V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0E\xABW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` a\x1A\x94_9_Q\x90_RT`\xFF\x16\x15a\x0E\xABW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` a\x1A\xB4_9_Q\x90_R\x80T`\x01\x19\x01a\x10\"W`@Qc>\xE5\xAE\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x90UV[_a\x106b\x01Q\x80Ba\x19#V[\x90P`\x05T\x81\x14a\x10KW`\x05\x81\x90U_`\x06U[\x81`\x06_\x82\x82Ta\x10\\\x91\x90a\x18\xE2V[\x90\x91UPP`\x03T`\x06T\x11\x15a\x05\xA0W`@Qc\x06R\xF4\xC5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x10\x95\x84\x86\x01\x86a\x19\x83V[\x91P\x91P_a\x10\xA53\x88\x85a\x13\x8DV[\x82Q` \x80\x85\x01Q`@\x80\x87\x01Q``\x80\x89\x01Q`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`\xC0\x80\x8F\x01Q\x89Q\x9B\x8C\x01\x8E\x90R\x98\x8B\x01\x9B\x90\x9BR\x94\x89\x01\x97\x90\x97R\x90\x87\x01\x93\x90\x93R\x93\x85\x01\x93\x90\x93R\x93\x83\x01\x93\x90\x93R`\xE0\x82\x01Ra\x01\0\x81\x01\x91\x90\x91R\x90\x91P_\x90a\x01 \x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x01Tc\x130e\x1D`\xE3\x1B\x85R\x92Q\x90\x94P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x92c\x99\x83(\xE8\x92`\x04\x80\x83\x01\x93\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x11gW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11\x8B\x91\x90a\x18\xF5V[\x14\x93PPPP[\x93\x92PPPV[`\x01_Q` a\x1A\xB4_9_Q\x90_RUV[a\x11\xB4a\x0F\xC1V[_Q` a\x1A\x94_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\r\xE9V[a\x11\xFD\x82a\x05 V[a\x12\x06\x81a\r\x9EV[a\x05\x9C\x83\x83a\x0C\xE9V[a\x0E\xABa\x14\x02V[a\x12 a\x14\x02V[a\x0E\xABa\x14KV[a\x120a\x14\x02V[a\x0E\xABa\x14kV[__Q` a\x1At_9_Q\x90_Ra\x12Q\x84\x84a\x07\xE2V[a\rbW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x12\x863\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x05\x1AV[a\x12\xDA\x82\x82a\x07\xE2V[a\x05\xA0W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0F5V[_Q` a\x1A\x94_9_Q\x90_RT`\xFF\x16a\x0E\xABW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13A\x82a\x14sV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x13\x85Wa\x05\x9E\x82\x82a\x14\xD6V[a\x05\xA0a\x15HV[__a\x13\x98\x84a\x15gV[\x90P_[`\xA0\x81\x10\x15a\x13\xF9W_\x84\x82`\xA0\x81\x10a\x13\xB8Wa\x13\xB8a\x1A\tV[` \x02\x01Q\x90P`\x01\x87\x83\x1C\x16\x80\x15a\x13\xDFW_\x82\x81R` \x85\x90R`@\x90 \x93Pa\x13\xEFV[_\x84\x81R` \x83\x90R`@\x90 \x93P[PP`\x01\x01a\x13\x9CV[P\x94\x93PPPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x0E\xABW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14Sa\x14\x02V[_Q` a\x1A\x94_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a\x11\x99a\x14\x02V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x14\xA8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0F5V[_Q` a\x1A4_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x14\xF2\x91\x90a\x1A\x1DV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x15*W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15/V[``\x91P[P\x91P\x91Pa\x15?\x85\x83\x83a\x15\xB3V[\x95\x94PPPPPV[4\x15a\x0E\xABW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__\x82`@Q` \x01a\x15|\x91\x81R` \x01\x90V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01R\x81Q\x80\x84\x03\x82\x01\x81R\x92\x82\x01\x90\x91R\x81Q\x91\x01 \x93\x92PPPV[``\x82a\x15\xC8Wa\x15\xC3\x82a\x16\x0FV[a\x11\x92V[\x81Q\x15\x80\x15a\x15\xDFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x16\x08W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0F5V[P\x80a\x11\x92V[\x80Q\x15a\x16\x1FW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a\x16HW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x11\x92W__\xFD[_` \x82\x84\x03\x12\x15a\x16oW__\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x16\x8CW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x16\xA2W__\xFD[\x825\x91Pa\x16\xB2` \x84\x01a\x16vV[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x16\xF8Wa\x16\xF8a\x16\xBBV[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x17\x11W__\xFD[a\x17\x1A\x83a\x16vV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x175W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x17EW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17_Wa\x17_a\x16\xBBV[a\x17r`\x1F\x82\x01`\x1F\x19\x16` \x01a\x16\xCFV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x17\x86W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15a\x17\xB7W__\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\xD4W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x17\xE4W__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\xFAW__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x18\x0BW__\xFD[\x93\x96` \x91\x90\x91\x01\x95P\x92\x93PPPV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x18aW__\xFD[a\x11\x92\x82a\x16vV[____`\x80\x85\x87\x03\x12\x15a\x18}W__\xFD[a\x18\x86\x85a\x16vV[\x93Pa\x18\x94` \x86\x01a\x16vV[\x92Pa\x18\xA2`@\x86\x01a\x16vV[\x91Pa\x18\xB0``\x86\x01a\x16vV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x05\x1AWa\x05\x1Aa\x18\xBBV[\x80\x82\x01\x80\x82\x11\x15a\x05\x1AWa\x05\x1Aa\x18\xBBV[_` \x82\x84\x03\x12\x15a\x19\x05W__\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x05\x1AWa\x05\x1Aa\x18\xBBV[_\x82a\x19=WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[_a\x19M`\xE0a\x16\xCFV[\x90P\x80`\xE0\x83\x01\x84\x81\x11\x15a\x19`W__\xFD[\x83[\x81\x81\x10\x15a\x19zW\x805\x83R` \x92\x83\x01\x92\x01a\x19bV[PPP\x92\x91PPV[__a\x14\xE0\x83\x85\x03\x12\x15a\x19\x95W__\xFD[_\x84`\x1F\x85\x01\x12a\x19\xA4W__\xFD[P_\x80a\x14\0a\x19\xB3\x81a\x16\xCFV[\x92P\x82\x91P\x85\x01\x86\x81\x11\x15a\x19\xC6W__\xFD[\x85[\x81\x81\x10\x15a\x19\xE0W\x805\x84R` \x93\x84\x01\x93\x01a\x19\xC8V[P\x81\x94P\x86a\x14\x1F\x87\x01\x12a\x19\xF3W__\xFD[a\x19\xFD\x87\x82a\x19BV[\x93PPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\xA1dsolcC\0\x08\x1C\0\n",
862    );
863    #[derive(serde::Serialize, serde::Deserialize)]
864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
865    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
866```solidity
867error AccessControlBadConfirmation();
868```*/
869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
870    #[derive(Clone)]
871    pub struct AccessControlBadConfirmation;
872    #[allow(
873        non_camel_case_types,
874        non_snake_case,
875        clippy::pub_underscore_fields,
876        clippy::style
877    )]
878    const _: () = {
879        use alloy::sol_types as alloy_sol_types;
880        #[doc(hidden)]
881        #[allow(dead_code)]
882        type UnderlyingSolTuple<'a> = ();
883        #[doc(hidden)]
884        type UnderlyingRustTuple<'a> = ();
885        #[cfg(test)]
886        #[allow(dead_code, unreachable_patterns)]
887        fn _type_assertion(
888            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
889        ) {
890            match _t {
891                alloy_sol_types::private::AssertTypeEq::<
892                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
893                >(_) => {}
894            }
895        }
896        #[automatically_derived]
897        #[doc(hidden)]
898        impl ::core::convert::From<AccessControlBadConfirmation>
899        for UnderlyingRustTuple<'_> {
900            fn from(value: AccessControlBadConfirmation) -> Self {
901                ()
902            }
903        }
904        #[automatically_derived]
905        #[doc(hidden)]
906        impl ::core::convert::From<UnderlyingRustTuple<'_>>
907        for AccessControlBadConfirmation {
908            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
909                Self
910            }
911        }
912        #[automatically_derived]
913        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
914            type Parameters<'a> = UnderlyingSolTuple<'a>;
915            type Token<'a> = <Self::Parameters<
916                'a,
917            > as alloy_sol_types::SolType>::Token<'a>;
918            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
919            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
920            #[inline]
921            fn new<'a>(
922                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
923            ) -> Self {
924                tuple.into()
925            }
926            #[inline]
927            fn tokenize(&self) -> Self::Token<'_> {
928                ()
929            }
930            #[inline]
931            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
932                <Self::Parameters<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
935                    .map(Self::new)
936            }
937        }
938    };
939    #[derive(serde::Serialize, serde::Deserialize)]
940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
941    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
942```solidity
943error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
944```*/
945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
946    #[derive(Clone)]
947    pub struct AccessControlUnauthorizedAccount {
948        #[allow(missing_docs)]
949        pub account: alloy::sol_types::private::Address,
950        #[allow(missing_docs)]
951        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
952    }
953    #[allow(
954        non_camel_case_types,
955        non_snake_case,
956        clippy::pub_underscore_fields,
957        clippy::style
958    )]
959    const _: () = {
960        use alloy::sol_types as alloy_sol_types;
961        #[doc(hidden)]
962        #[allow(dead_code)]
963        type UnderlyingSolTuple<'a> = (
964            alloy::sol_types::sol_data::Address,
965            alloy::sol_types::sol_data::FixedBytes<32>,
966        );
967        #[doc(hidden)]
968        type UnderlyingRustTuple<'a> = (
969            alloy::sol_types::private::Address,
970            alloy::sol_types::private::FixedBytes<32>,
971        );
972        #[cfg(test)]
973        #[allow(dead_code, unreachable_patterns)]
974        fn _type_assertion(
975            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
976        ) {
977            match _t {
978                alloy_sol_types::private::AssertTypeEq::<
979                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
980                >(_) => {}
981            }
982        }
983        #[automatically_derived]
984        #[doc(hidden)]
985        impl ::core::convert::From<AccessControlUnauthorizedAccount>
986        for UnderlyingRustTuple<'_> {
987            fn from(value: AccessControlUnauthorizedAccount) -> Self {
988                (value.account, value.neededRole)
989            }
990        }
991        #[automatically_derived]
992        #[doc(hidden)]
993        impl ::core::convert::From<UnderlyingRustTuple<'_>>
994        for AccessControlUnauthorizedAccount {
995            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
996                Self {
997                    account: tuple.0,
998                    neededRole: tuple.1,
999                }
1000            }
1001        }
1002        #[automatically_derived]
1003        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
1004            type Parameters<'a> = UnderlyingSolTuple<'a>;
1005            type Token<'a> = <Self::Parameters<
1006                'a,
1007            > as alloy_sol_types::SolType>::Token<'a>;
1008            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1009            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1010            #[inline]
1011            fn new<'a>(
1012                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1013            ) -> Self {
1014                tuple.into()
1015            }
1016            #[inline]
1017            fn tokenize(&self) -> Self::Token<'_> {
1018                (
1019                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1020                        &self.account,
1021                    ),
1022                    <alloy::sol_types::sol_data::FixedBytes<
1023                        32,
1024                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1025                )
1026            }
1027            #[inline]
1028            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1029                <Self::Parameters<
1030                    '_,
1031                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1032                    .map(Self::new)
1033            }
1034        }
1035    };
1036    #[derive(serde::Serialize, serde::Deserialize)]
1037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1038    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
1039```solidity
1040error AddressEmptyCode(address target);
1041```*/
1042    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1043    #[derive(Clone)]
1044    pub struct AddressEmptyCode {
1045        #[allow(missing_docs)]
1046        pub target: alloy::sol_types::private::Address,
1047    }
1048    #[allow(
1049        non_camel_case_types,
1050        non_snake_case,
1051        clippy::pub_underscore_fields,
1052        clippy::style
1053    )]
1054    const _: () = {
1055        use alloy::sol_types as alloy_sol_types;
1056        #[doc(hidden)]
1057        #[allow(dead_code)]
1058        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1059        #[doc(hidden)]
1060        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1061        #[cfg(test)]
1062        #[allow(dead_code, unreachable_patterns)]
1063        fn _type_assertion(
1064            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1065        ) {
1066            match _t {
1067                alloy_sol_types::private::AssertTypeEq::<
1068                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1069                >(_) => {}
1070            }
1071        }
1072        #[automatically_derived]
1073        #[doc(hidden)]
1074        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
1075            fn from(value: AddressEmptyCode) -> Self {
1076                (value.target,)
1077            }
1078        }
1079        #[automatically_derived]
1080        #[doc(hidden)]
1081        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
1082            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1083                Self { target: tuple.0 }
1084            }
1085        }
1086        #[automatically_derived]
1087        impl alloy_sol_types::SolError for AddressEmptyCode {
1088            type Parameters<'a> = UnderlyingSolTuple<'a>;
1089            type Token<'a> = <Self::Parameters<
1090                'a,
1091            > as alloy_sol_types::SolType>::Token<'a>;
1092            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
1093            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
1094            #[inline]
1095            fn new<'a>(
1096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1097            ) -> Self {
1098                tuple.into()
1099            }
1100            #[inline]
1101            fn tokenize(&self) -> Self::Token<'_> {
1102                (
1103                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1104                        &self.target,
1105                    ),
1106                )
1107            }
1108            #[inline]
1109            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1110                <Self::Parameters<
1111                    '_,
1112                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1113                    .map(Self::new)
1114            }
1115        }
1116    };
1117    #[derive(serde::Serialize, serde::Deserialize)]
1118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1119    /**Custom error with signature `AlreadyClaimed()` and selector `0x646cf558`.
1120```solidity
1121error AlreadyClaimed();
1122```*/
1123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1124    #[derive(Clone)]
1125    pub struct AlreadyClaimed;
1126    #[allow(
1127        non_camel_case_types,
1128        non_snake_case,
1129        clippy::pub_underscore_fields,
1130        clippy::style
1131    )]
1132    const _: () = {
1133        use alloy::sol_types as alloy_sol_types;
1134        #[doc(hidden)]
1135        #[allow(dead_code)]
1136        type UnderlyingSolTuple<'a> = ();
1137        #[doc(hidden)]
1138        type UnderlyingRustTuple<'a> = ();
1139        #[cfg(test)]
1140        #[allow(dead_code, unreachable_patterns)]
1141        fn _type_assertion(
1142            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1143        ) {
1144            match _t {
1145                alloy_sol_types::private::AssertTypeEq::<
1146                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1147                >(_) => {}
1148            }
1149        }
1150        #[automatically_derived]
1151        #[doc(hidden)]
1152        impl ::core::convert::From<AlreadyClaimed> for UnderlyingRustTuple<'_> {
1153            fn from(value: AlreadyClaimed) -> Self {
1154                ()
1155            }
1156        }
1157        #[automatically_derived]
1158        #[doc(hidden)]
1159        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AlreadyClaimed {
1160            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1161                Self
1162            }
1163        }
1164        #[automatically_derived]
1165        impl alloy_sol_types::SolError for AlreadyClaimed {
1166            type Parameters<'a> = UnderlyingSolTuple<'a>;
1167            type Token<'a> = <Self::Parameters<
1168                'a,
1169            > as alloy_sol_types::SolType>::Token<'a>;
1170            const SIGNATURE: &'static str = "AlreadyClaimed()";
1171            const SELECTOR: [u8; 4] = [100u8, 108u8, 245u8, 88u8];
1172            #[inline]
1173            fn new<'a>(
1174                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1175            ) -> Self {
1176                tuple.into()
1177            }
1178            #[inline]
1179            fn tokenize(&self) -> Self::Token<'_> {
1180                ()
1181            }
1182            #[inline]
1183            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1184                <Self::Parameters<
1185                    '_,
1186                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1187                    .map(Self::new)
1188            }
1189        }
1190    };
1191    #[derive(serde::Serialize, serde::Deserialize)]
1192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1193    /**Custom error with signature `DailyLimitExceeded()` and selector `0x194bd314`.
1194```solidity
1195error DailyLimitExceeded();
1196```*/
1197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1198    #[derive(Clone)]
1199    pub struct DailyLimitExceeded;
1200    #[allow(
1201        non_camel_case_types,
1202        non_snake_case,
1203        clippy::pub_underscore_fields,
1204        clippy::style
1205    )]
1206    const _: () = {
1207        use alloy::sol_types as alloy_sol_types;
1208        #[doc(hidden)]
1209        #[allow(dead_code)]
1210        type UnderlyingSolTuple<'a> = ();
1211        #[doc(hidden)]
1212        type UnderlyingRustTuple<'a> = ();
1213        #[cfg(test)]
1214        #[allow(dead_code, unreachable_patterns)]
1215        fn _type_assertion(
1216            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1217        ) {
1218            match _t {
1219                alloy_sol_types::private::AssertTypeEq::<
1220                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1221                >(_) => {}
1222            }
1223        }
1224        #[automatically_derived]
1225        #[doc(hidden)]
1226        impl ::core::convert::From<DailyLimitExceeded> for UnderlyingRustTuple<'_> {
1227            fn from(value: DailyLimitExceeded) -> Self {
1228                ()
1229            }
1230        }
1231        #[automatically_derived]
1232        #[doc(hidden)]
1233        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DailyLimitExceeded {
1234            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1235                Self
1236            }
1237        }
1238        #[automatically_derived]
1239        impl alloy_sol_types::SolError for DailyLimitExceeded {
1240            type Parameters<'a> = UnderlyingSolTuple<'a>;
1241            type Token<'a> = <Self::Parameters<
1242                'a,
1243            > as alloy_sol_types::SolType>::Token<'a>;
1244            const SIGNATURE: &'static str = "DailyLimitExceeded()";
1245            const SELECTOR: [u8; 4] = [25u8, 75u8, 211u8, 20u8];
1246            #[inline]
1247            fn new<'a>(
1248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1249            ) -> Self {
1250                tuple.into()
1251            }
1252            #[inline]
1253            fn tokenize(&self) -> Self::Token<'_> {
1254                ()
1255            }
1256            #[inline]
1257            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1258                <Self::Parameters<
1259                    '_,
1260                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1261                    .map(Self::new)
1262            }
1263        }
1264    };
1265    #[derive(serde::Serialize, serde::Deserialize)]
1266    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1267    /**Custom error with signature `DailyLimitTooHigh()` and selector `0xc5d2ae53`.
1268```solidity
1269error DailyLimitTooHigh();
1270```*/
1271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1272    #[derive(Clone)]
1273    pub struct DailyLimitTooHigh;
1274    #[allow(
1275        non_camel_case_types,
1276        non_snake_case,
1277        clippy::pub_underscore_fields,
1278        clippy::style
1279    )]
1280    const _: () = {
1281        use alloy::sol_types as alloy_sol_types;
1282        #[doc(hidden)]
1283        #[allow(dead_code)]
1284        type UnderlyingSolTuple<'a> = ();
1285        #[doc(hidden)]
1286        type UnderlyingRustTuple<'a> = ();
1287        #[cfg(test)]
1288        #[allow(dead_code, unreachable_patterns)]
1289        fn _type_assertion(
1290            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1291        ) {
1292            match _t {
1293                alloy_sol_types::private::AssertTypeEq::<
1294                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1295                >(_) => {}
1296            }
1297        }
1298        #[automatically_derived]
1299        #[doc(hidden)]
1300        impl ::core::convert::From<DailyLimitTooHigh> for UnderlyingRustTuple<'_> {
1301            fn from(value: DailyLimitTooHigh) -> Self {
1302                ()
1303            }
1304        }
1305        #[automatically_derived]
1306        #[doc(hidden)]
1307        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DailyLimitTooHigh {
1308            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1309                Self
1310            }
1311        }
1312        #[automatically_derived]
1313        impl alloy_sol_types::SolError for DailyLimitTooHigh {
1314            type Parameters<'a> = UnderlyingSolTuple<'a>;
1315            type Token<'a> = <Self::Parameters<
1316                'a,
1317            > as alloy_sol_types::SolType>::Token<'a>;
1318            const SIGNATURE: &'static str = "DailyLimitTooHigh()";
1319            const SELECTOR: [u8; 4] = [197u8, 210u8, 174u8, 83u8];
1320            #[inline]
1321            fn new<'a>(
1322                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1323            ) -> Self {
1324                tuple.into()
1325            }
1326            #[inline]
1327            fn tokenize(&self) -> Self::Token<'_> {
1328                ()
1329            }
1330            #[inline]
1331            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1332                <Self::Parameters<
1333                    '_,
1334                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1335                    .map(Self::new)
1336            }
1337        }
1338    };
1339    #[derive(serde::Serialize, serde::Deserialize)]
1340    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1341    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
1342```solidity
1343error DefaultAdminCannotBeRenounced();
1344```*/
1345    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1346    #[derive(Clone)]
1347    pub struct DefaultAdminCannotBeRenounced;
1348    #[allow(
1349        non_camel_case_types,
1350        non_snake_case,
1351        clippy::pub_underscore_fields,
1352        clippy::style
1353    )]
1354    const _: () = {
1355        use alloy::sol_types as alloy_sol_types;
1356        #[doc(hidden)]
1357        #[allow(dead_code)]
1358        type UnderlyingSolTuple<'a> = ();
1359        #[doc(hidden)]
1360        type UnderlyingRustTuple<'a> = ();
1361        #[cfg(test)]
1362        #[allow(dead_code, unreachable_patterns)]
1363        fn _type_assertion(
1364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1365        ) {
1366            match _t {
1367                alloy_sol_types::private::AssertTypeEq::<
1368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1369                >(_) => {}
1370            }
1371        }
1372        #[automatically_derived]
1373        #[doc(hidden)]
1374        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
1375        for UnderlyingRustTuple<'_> {
1376            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
1377                ()
1378            }
1379        }
1380        #[automatically_derived]
1381        #[doc(hidden)]
1382        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1383        for DefaultAdminCannotBeRenounced {
1384            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1385                Self
1386            }
1387        }
1388        #[automatically_derived]
1389        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
1390            type Parameters<'a> = UnderlyingSolTuple<'a>;
1391            type Token<'a> = <Self::Parameters<
1392                'a,
1393            > as alloy_sol_types::SolType>::Token<'a>;
1394            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
1395            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
1396            #[inline]
1397            fn new<'a>(
1398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1399            ) -> Self {
1400                tuple.into()
1401            }
1402            #[inline]
1403            fn tokenize(&self) -> Self::Token<'_> {
1404                ()
1405            }
1406            #[inline]
1407            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1408                <Self::Parameters<
1409                    '_,
1410                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1411                    .map(Self::new)
1412            }
1413        }
1414    };
1415    #[derive(serde::Serialize, serde::Deserialize)]
1416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1417    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
1418```solidity
1419error DefaultAdminCannotBeRevoked();
1420```*/
1421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1422    #[derive(Clone)]
1423    pub struct DefaultAdminCannotBeRevoked;
1424    #[allow(
1425        non_camel_case_types,
1426        non_snake_case,
1427        clippy::pub_underscore_fields,
1428        clippy::style
1429    )]
1430    const _: () = {
1431        use alloy::sol_types as alloy_sol_types;
1432        #[doc(hidden)]
1433        #[allow(dead_code)]
1434        type UnderlyingSolTuple<'a> = ();
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = ();
1437        #[cfg(test)]
1438        #[allow(dead_code, unreachable_patterns)]
1439        fn _type_assertion(
1440            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1441        ) {
1442            match _t {
1443                alloy_sol_types::private::AssertTypeEq::<
1444                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1445                >(_) => {}
1446            }
1447        }
1448        #[automatically_derived]
1449        #[doc(hidden)]
1450        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
1451        for UnderlyingRustTuple<'_> {
1452            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
1453                ()
1454            }
1455        }
1456        #[automatically_derived]
1457        #[doc(hidden)]
1458        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1459        for DefaultAdminCannotBeRevoked {
1460            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1461                Self
1462            }
1463        }
1464        #[automatically_derived]
1465        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
1466            type Parameters<'a> = UnderlyingSolTuple<'a>;
1467            type Token<'a> = <Self::Parameters<
1468                'a,
1469            > as alloy_sol_types::SolType>::Token<'a>;
1470            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
1471            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
1472            #[inline]
1473            fn new<'a>(
1474                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1475            ) -> Self {
1476                tuple.into()
1477            }
1478            #[inline]
1479            fn tokenize(&self) -> Self::Token<'_> {
1480                ()
1481            }
1482            #[inline]
1483            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1484                <Self::Parameters<
1485                    '_,
1486                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1487                    .map(Self::new)
1488            }
1489        }
1490    };
1491    #[derive(serde::Serialize, serde::Deserialize)]
1492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1493    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
1494```solidity
1495error ERC1967InvalidImplementation(address implementation);
1496```*/
1497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1498    #[derive(Clone)]
1499    pub struct ERC1967InvalidImplementation {
1500        #[allow(missing_docs)]
1501        pub implementation: alloy::sol_types::private::Address,
1502    }
1503    #[allow(
1504        non_camel_case_types,
1505        non_snake_case,
1506        clippy::pub_underscore_fields,
1507        clippy::style
1508    )]
1509    const _: () = {
1510        use alloy::sol_types as alloy_sol_types;
1511        #[doc(hidden)]
1512        #[allow(dead_code)]
1513        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1514        #[doc(hidden)]
1515        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1516        #[cfg(test)]
1517        #[allow(dead_code, unreachable_patterns)]
1518        fn _type_assertion(
1519            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1520        ) {
1521            match _t {
1522                alloy_sol_types::private::AssertTypeEq::<
1523                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1524                >(_) => {}
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<ERC1967InvalidImplementation>
1530        for UnderlyingRustTuple<'_> {
1531            fn from(value: ERC1967InvalidImplementation) -> Self {
1532                (value.implementation,)
1533            }
1534        }
1535        #[automatically_derived]
1536        #[doc(hidden)]
1537        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1538        for ERC1967InvalidImplementation {
1539            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1540                Self { implementation: tuple.0 }
1541            }
1542        }
1543        #[automatically_derived]
1544        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
1545            type Parameters<'a> = UnderlyingSolTuple<'a>;
1546            type Token<'a> = <Self::Parameters<
1547                'a,
1548            > as alloy_sol_types::SolType>::Token<'a>;
1549            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
1550            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
1551            #[inline]
1552            fn new<'a>(
1553                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1554            ) -> Self {
1555                tuple.into()
1556            }
1557            #[inline]
1558            fn tokenize(&self) -> Self::Token<'_> {
1559                (
1560                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1561                        &self.implementation,
1562                    ),
1563                )
1564            }
1565            #[inline]
1566            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1567                <Self::Parameters<
1568                    '_,
1569                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1570                    .map(Self::new)
1571            }
1572        }
1573    };
1574    #[derive(serde::Serialize, serde::Deserialize)]
1575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1576    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
1577```solidity
1578error ERC1967NonPayable();
1579```*/
1580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1581    #[derive(Clone)]
1582    pub struct ERC1967NonPayable;
1583    #[allow(
1584        non_camel_case_types,
1585        non_snake_case,
1586        clippy::pub_underscore_fields,
1587        clippy::style
1588    )]
1589    const _: () = {
1590        use alloy::sol_types as alloy_sol_types;
1591        #[doc(hidden)]
1592        #[allow(dead_code)]
1593        type UnderlyingSolTuple<'a> = ();
1594        #[doc(hidden)]
1595        type UnderlyingRustTuple<'a> = ();
1596        #[cfg(test)]
1597        #[allow(dead_code, unreachable_patterns)]
1598        fn _type_assertion(
1599            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1600        ) {
1601            match _t {
1602                alloy_sol_types::private::AssertTypeEq::<
1603                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1604                >(_) => {}
1605            }
1606        }
1607        #[automatically_derived]
1608        #[doc(hidden)]
1609        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
1610            fn from(value: ERC1967NonPayable) -> Self {
1611                ()
1612            }
1613        }
1614        #[automatically_derived]
1615        #[doc(hidden)]
1616        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
1617            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1618                Self
1619            }
1620        }
1621        #[automatically_derived]
1622        impl alloy_sol_types::SolError for ERC1967NonPayable {
1623            type Parameters<'a> = UnderlyingSolTuple<'a>;
1624            type Token<'a> = <Self::Parameters<
1625                'a,
1626            > as alloy_sol_types::SolType>::Token<'a>;
1627            const SIGNATURE: &'static str = "ERC1967NonPayable()";
1628            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
1629            #[inline]
1630            fn new<'a>(
1631                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1632            ) -> Self {
1633                tuple.into()
1634            }
1635            #[inline]
1636            fn tokenize(&self) -> Self::Token<'_> {
1637                ()
1638            }
1639            #[inline]
1640            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1641                <Self::Parameters<
1642                    '_,
1643                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1644                    .map(Self::new)
1645            }
1646        }
1647    };
1648    #[derive(serde::Serialize, serde::Deserialize)]
1649    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1650    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
1651```solidity
1652error EnforcedPause();
1653```*/
1654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1655    #[derive(Clone)]
1656    pub struct EnforcedPause;
1657    #[allow(
1658        non_camel_case_types,
1659        non_snake_case,
1660        clippy::pub_underscore_fields,
1661        clippy::style
1662    )]
1663    const _: () = {
1664        use alloy::sol_types as alloy_sol_types;
1665        #[doc(hidden)]
1666        #[allow(dead_code)]
1667        type UnderlyingSolTuple<'a> = ();
1668        #[doc(hidden)]
1669        type UnderlyingRustTuple<'a> = ();
1670        #[cfg(test)]
1671        #[allow(dead_code, unreachable_patterns)]
1672        fn _type_assertion(
1673            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1674        ) {
1675            match _t {
1676                alloy_sol_types::private::AssertTypeEq::<
1677                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1678                >(_) => {}
1679            }
1680        }
1681        #[automatically_derived]
1682        #[doc(hidden)]
1683        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
1684            fn from(value: EnforcedPause) -> Self {
1685                ()
1686            }
1687        }
1688        #[automatically_derived]
1689        #[doc(hidden)]
1690        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
1691            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1692                Self
1693            }
1694        }
1695        #[automatically_derived]
1696        impl alloy_sol_types::SolError for EnforcedPause {
1697            type Parameters<'a> = UnderlyingSolTuple<'a>;
1698            type Token<'a> = <Self::Parameters<
1699                'a,
1700            > as alloy_sol_types::SolType>::Token<'a>;
1701            const SIGNATURE: &'static str = "EnforcedPause()";
1702            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
1703            #[inline]
1704            fn new<'a>(
1705                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1706            ) -> Self {
1707                tuple.into()
1708            }
1709            #[inline]
1710            fn tokenize(&self) -> Self::Token<'_> {
1711                ()
1712            }
1713            #[inline]
1714            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1715                <Self::Parameters<
1716                    '_,
1717                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1718                    .map(Self::new)
1719            }
1720        }
1721    };
1722    #[derive(serde::Serialize, serde::Deserialize)]
1723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1724    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
1725```solidity
1726error ExpectedPause();
1727```*/
1728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1729    #[derive(Clone)]
1730    pub struct ExpectedPause;
1731    #[allow(
1732        non_camel_case_types,
1733        non_snake_case,
1734        clippy::pub_underscore_fields,
1735        clippy::style
1736    )]
1737    const _: () = {
1738        use alloy::sol_types as alloy_sol_types;
1739        #[doc(hidden)]
1740        #[allow(dead_code)]
1741        type UnderlyingSolTuple<'a> = ();
1742        #[doc(hidden)]
1743        type UnderlyingRustTuple<'a> = ();
1744        #[cfg(test)]
1745        #[allow(dead_code, unreachable_patterns)]
1746        fn _type_assertion(
1747            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1748        ) {
1749            match _t {
1750                alloy_sol_types::private::AssertTypeEq::<
1751                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1752                >(_) => {}
1753            }
1754        }
1755        #[automatically_derived]
1756        #[doc(hidden)]
1757        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
1758            fn from(value: ExpectedPause) -> Self {
1759                ()
1760            }
1761        }
1762        #[automatically_derived]
1763        #[doc(hidden)]
1764        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
1765            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1766                Self
1767            }
1768        }
1769        #[automatically_derived]
1770        impl alloy_sol_types::SolError for ExpectedPause {
1771            type Parameters<'a> = UnderlyingSolTuple<'a>;
1772            type Token<'a> = <Self::Parameters<
1773                'a,
1774            > as alloy_sol_types::SolType>::Token<'a>;
1775            const SIGNATURE: &'static str = "ExpectedPause()";
1776            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
1777            #[inline]
1778            fn new<'a>(
1779                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1780            ) -> Self {
1781                tuple.into()
1782            }
1783            #[inline]
1784            fn tokenize(&self) -> Self::Token<'_> {
1785                ()
1786            }
1787            #[inline]
1788            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1789                <Self::Parameters<
1790                    '_,
1791                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1792                    .map(Self::new)
1793            }
1794        }
1795    };
1796    #[derive(serde::Serialize, serde::Deserialize)]
1797    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1798    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1799```solidity
1800error FailedInnerCall();
1801```*/
1802    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1803    #[derive(Clone)]
1804    pub struct FailedInnerCall;
1805    #[allow(
1806        non_camel_case_types,
1807        non_snake_case,
1808        clippy::pub_underscore_fields,
1809        clippy::style
1810    )]
1811    const _: () = {
1812        use alloy::sol_types as alloy_sol_types;
1813        #[doc(hidden)]
1814        #[allow(dead_code)]
1815        type UnderlyingSolTuple<'a> = ();
1816        #[doc(hidden)]
1817        type UnderlyingRustTuple<'a> = ();
1818        #[cfg(test)]
1819        #[allow(dead_code, unreachable_patterns)]
1820        fn _type_assertion(
1821            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1822        ) {
1823            match _t {
1824                alloy_sol_types::private::AssertTypeEq::<
1825                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1826                >(_) => {}
1827            }
1828        }
1829        #[automatically_derived]
1830        #[doc(hidden)]
1831        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1832            fn from(value: FailedInnerCall) -> Self {
1833                ()
1834            }
1835        }
1836        #[automatically_derived]
1837        #[doc(hidden)]
1838        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1839            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1840                Self
1841            }
1842        }
1843        #[automatically_derived]
1844        impl alloy_sol_types::SolError for FailedInnerCall {
1845            type Parameters<'a> = UnderlyingSolTuple<'a>;
1846            type Token<'a> = <Self::Parameters<
1847                'a,
1848            > as alloy_sol_types::SolType>::Token<'a>;
1849            const SIGNATURE: &'static str = "FailedInnerCall()";
1850            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1851            #[inline]
1852            fn new<'a>(
1853                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1854            ) -> Self {
1855                tuple.into()
1856            }
1857            #[inline]
1858            fn tokenize(&self) -> Self::Token<'_> {
1859                ()
1860            }
1861            #[inline]
1862            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1863                <Self::Parameters<
1864                    '_,
1865                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1866                    .map(Self::new)
1867            }
1868        }
1869    };
1870    #[derive(serde::Serialize, serde::Deserialize)]
1871    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1872    /**Custom error with signature `InvalidAuthRoot()` and selector `0x328b8878`.
1873```solidity
1874error InvalidAuthRoot();
1875```*/
1876    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1877    #[derive(Clone)]
1878    pub struct InvalidAuthRoot;
1879    #[allow(
1880        non_camel_case_types,
1881        non_snake_case,
1882        clippy::pub_underscore_fields,
1883        clippy::style
1884    )]
1885    const _: () = {
1886        use alloy::sol_types as alloy_sol_types;
1887        #[doc(hidden)]
1888        #[allow(dead_code)]
1889        type UnderlyingSolTuple<'a> = ();
1890        #[doc(hidden)]
1891        type UnderlyingRustTuple<'a> = ();
1892        #[cfg(test)]
1893        #[allow(dead_code, unreachable_patterns)]
1894        fn _type_assertion(
1895            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1896        ) {
1897            match _t {
1898                alloy_sol_types::private::AssertTypeEq::<
1899                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1900                >(_) => {}
1901            }
1902        }
1903        #[automatically_derived]
1904        #[doc(hidden)]
1905        impl ::core::convert::From<InvalidAuthRoot> for UnderlyingRustTuple<'_> {
1906            fn from(value: InvalidAuthRoot) -> Self {
1907                ()
1908            }
1909        }
1910        #[automatically_derived]
1911        #[doc(hidden)]
1912        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAuthRoot {
1913            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1914                Self
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::SolError for InvalidAuthRoot {
1919            type Parameters<'a> = UnderlyingSolTuple<'a>;
1920            type Token<'a> = <Self::Parameters<
1921                'a,
1922            > as alloy_sol_types::SolType>::Token<'a>;
1923            const SIGNATURE: &'static str = "InvalidAuthRoot()";
1924            const SELECTOR: [u8; 4] = [50u8, 139u8, 136u8, 120u8];
1925            #[inline]
1926            fn new<'a>(
1927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1928            ) -> Self {
1929                tuple.into()
1930            }
1931            #[inline]
1932            fn tokenize(&self) -> Self::Token<'_> {
1933                ()
1934            }
1935            #[inline]
1936            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1937                <Self::Parameters<
1938                    '_,
1939                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1940                    .map(Self::new)
1941            }
1942        }
1943    };
1944    #[derive(serde::Serialize, serde::Deserialize)]
1945    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1946    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
1947```solidity
1948error InvalidInitialization();
1949```*/
1950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1951    #[derive(Clone)]
1952    pub struct InvalidInitialization;
1953    #[allow(
1954        non_camel_case_types,
1955        non_snake_case,
1956        clippy::pub_underscore_fields,
1957        clippy::style
1958    )]
1959    const _: () = {
1960        use alloy::sol_types as alloy_sol_types;
1961        #[doc(hidden)]
1962        #[allow(dead_code)]
1963        type UnderlyingSolTuple<'a> = ();
1964        #[doc(hidden)]
1965        type UnderlyingRustTuple<'a> = ();
1966        #[cfg(test)]
1967        #[allow(dead_code, unreachable_patterns)]
1968        fn _type_assertion(
1969            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1970        ) {
1971            match _t {
1972                alloy_sol_types::private::AssertTypeEq::<
1973                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1974                >(_) => {}
1975            }
1976        }
1977        #[automatically_derived]
1978        #[doc(hidden)]
1979        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
1980            fn from(value: InvalidInitialization) -> Self {
1981                ()
1982            }
1983        }
1984        #[automatically_derived]
1985        #[doc(hidden)]
1986        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
1987            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1988                Self
1989            }
1990        }
1991        #[automatically_derived]
1992        impl alloy_sol_types::SolError for InvalidInitialization {
1993            type Parameters<'a> = UnderlyingSolTuple<'a>;
1994            type Token<'a> = <Self::Parameters<
1995                'a,
1996            > as alloy_sol_types::SolType>::Token<'a>;
1997            const SIGNATURE: &'static str = "InvalidInitialization()";
1998            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
1999            #[inline]
2000            fn new<'a>(
2001                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2002            ) -> Self {
2003                tuple.into()
2004            }
2005            #[inline]
2006            fn tokenize(&self) -> Self::Token<'_> {
2007                ()
2008            }
2009            #[inline]
2010            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2011                <Self::Parameters<
2012                    '_,
2013                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2014                    .map(Self::new)
2015            }
2016        }
2017    };
2018    #[derive(serde::Serialize, serde::Deserialize)]
2019    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2020    /**Custom error with signature `InvalidRewardAmount()` and selector `0x38539865`.
2021```solidity
2022error InvalidRewardAmount();
2023```*/
2024    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2025    #[derive(Clone)]
2026    pub struct InvalidRewardAmount;
2027    #[allow(
2028        non_camel_case_types,
2029        non_snake_case,
2030        clippy::pub_underscore_fields,
2031        clippy::style
2032    )]
2033    const _: () = {
2034        use alloy::sol_types as alloy_sol_types;
2035        #[doc(hidden)]
2036        #[allow(dead_code)]
2037        type UnderlyingSolTuple<'a> = ();
2038        #[doc(hidden)]
2039        type UnderlyingRustTuple<'a> = ();
2040        #[cfg(test)]
2041        #[allow(dead_code, unreachable_patterns)]
2042        fn _type_assertion(
2043            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2044        ) {
2045            match _t {
2046                alloy_sol_types::private::AssertTypeEq::<
2047                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2048                >(_) => {}
2049            }
2050        }
2051        #[automatically_derived]
2052        #[doc(hidden)]
2053        impl ::core::convert::From<InvalidRewardAmount> for UnderlyingRustTuple<'_> {
2054            fn from(value: InvalidRewardAmount) -> Self {
2055                ()
2056            }
2057        }
2058        #[automatically_derived]
2059        #[doc(hidden)]
2060        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidRewardAmount {
2061            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2062                Self
2063            }
2064        }
2065        #[automatically_derived]
2066        impl alloy_sol_types::SolError for InvalidRewardAmount {
2067            type Parameters<'a> = UnderlyingSolTuple<'a>;
2068            type Token<'a> = <Self::Parameters<
2069                'a,
2070            > as alloy_sol_types::SolType>::Token<'a>;
2071            const SIGNATURE: &'static str = "InvalidRewardAmount()";
2072            const SELECTOR: [u8; 4] = [56u8, 83u8, 152u8, 101u8];
2073            #[inline]
2074            fn new<'a>(
2075                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2076            ) -> Self {
2077                tuple.into()
2078            }
2079            #[inline]
2080            fn tokenize(&self) -> Self::Token<'_> {
2081                ()
2082            }
2083            #[inline]
2084            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2085                <Self::Parameters<
2086                    '_,
2087                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2088                    .map(Self::new)
2089            }
2090        }
2091    };
2092    #[derive(serde::Serialize, serde::Deserialize)]
2093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2094    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
2095```solidity
2096error NoChangeRequired();
2097```*/
2098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2099    #[derive(Clone)]
2100    pub struct NoChangeRequired;
2101    #[allow(
2102        non_camel_case_types,
2103        non_snake_case,
2104        clippy::pub_underscore_fields,
2105        clippy::style
2106    )]
2107    const _: () = {
2108        use alloy::sol_types as alloy_sol_types;
2109        #[doc(hidden)]
2110        #[allow(dead_code)]
2111        type UnderlyingSolTuple<'a> = ();
2112        #[doc(hidden)]
2113        type UnderlyingRustTuple<'a> = ();
2114        #[cfg(test)]
2115        #[allow(dead_code, unreachable_patterns)]
2116        fn _type_assertion(
2117            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2118        ) {
2119            match _t {
2120                alloy_sol_types::private::AssertTypeEq::<
2121                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2122                >(_) => {}
2123            }
2124        }
2125        #[automatically_derived]
2126        #[doc(hidden)]
2127        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
2128            fn from(value: NoChangeRequired) -> Self {
2129                ()
2130            }
2131        }
2132        #[automatically_derived]
2133        #[doc(hidden)]
2134        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
2135            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2136                Self
2137            }
2138        }
2139        #[automatically_derived]
2140        impl alloy_sol_types::SolError for NoChangeRequired {
2141            type Parameters<'a> = UnderlyingSolTuple<'a>;
2142            type Token<'a> = <Self::Parameters<
2143                'a,
2144            > as alloy_sol_types::SolType>::Token<'a>;
2145            const SIGNATURE: &'static str = "NoChangeRequired()";
2146            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
2147            #[inline]
2148            fn new<'a>(
2149                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2150            ) -> Self {
2151                tuple.into()
2152            }
2153            #[inline]
2154            fn tokenize(&self) -> Self::Token<'_> {
2155                ()
2156            }
2157            #[inline]
2158            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2159                <Self::Parameters<
2160                    '_,
2161                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2162                    .map(Self::new)
2163            }
2164        }
2165    };
2166    #[derive(serde::Serialize, serde::Deserialize)]
2167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2168    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
2169```solidity
2170error NotInitializing();
2171```*/
2172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2173    #[derive(Clone)]
2174    pub struct NotInitializing;
2175    #[allow(
2176        non_camel_case_types,
2177        non_snake_case,
2178        clippy::pub_underscore_fields,
2179        clippy::style
2180    )]
2181    const _: () = {
2182        use alloy::sol_types as alloy_sol_types;
2183        #[doc(hidden)]
2184        #[allow(dead_code)]
2185        type UnderlyingSolTuple<'a> = ();
2186        #[doc(hidden)]
2187        type UnderlyingRustTuple<'a> = ();
2188        #[cfg(test)]
2189        #[allow(dead_code, unreachable_patterns)]
2190        fn _type_assertion(
2191            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2192        ) {
2193            match _t {
2194                alloy_sol_types::private::AssertTypeEq::<
2195                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2196                >(_) => {}
2197            }
2198        }
2199        #[automatically_derived]
2200        #[doc(hidden)]
2201        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
2202            fn from(value: NotInitializing) -> Self {
2203                ()
2204            }
2205        }
2206        #[automatically_derived]
2207        #[doc(hidden)]
2208        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
2209            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2210                Self
2211            }
2212        }
2213        #[automatically_derived]
2214        impl alloy_sol_types::SolError for NotInitializing {
2215            type Parameters<'a> = UnderlyingSolTuple<'a>;
2216            type Token<'a> = <Self::Parameters<
2217                'a,
2218            > as alloy_sol_types::SolType>::Token<'a>;
2219            const SIGNATURE: &'static str = "NotInitializing()";
2220            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
2221            #[inline]
2222            fn new<'a>(
2223                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2224            ) -> Self {
2225                tuple.into()
2226            }
2227            #[inline]
2228            fn tokenize(&self) -> Self::Token<'_> {
2229                ()
2230            }
2231            #[inline]
2232            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2233                <Self::Parameters<
2234                    '_,
2235                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2236                    .map(Self::new)
2237            }
2238        }
2239    };
2240    #[derive(serde::Serialize, serde::Deserialize)]
2241    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2242    /**Custom error with signature `ReentrancyGuardReentrantCall()` and selector `0x3ee5aeb5`.
2243```solidity
2244error ReentrancyGuardReentrantCall();
2245```*/
2246    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2247    #[derive(Clone)]
2248    pub struct ReentrancyGuardReentrantCall;
2249    #[allow(
2250        non_camel_case_types,
2251        non_snake_case,
2252        clippy::pub_underscore_fields,
2253        clippy::style
2254    )]
2255    const _: () = {
2256        use alloy::sol_types as alloy_sol_types;
2257        #[doc(hidden)]
2258        #[allow(dead_code)]
2259        type UnderlyingSolTuple<'a> = ();
2260        #[doc(hidden)]
2261        type UnderlyingRustTuple<'a> = ();
2262        #[cfg(test)]
2263        #[allow(dead_code, unreachable_patterns)]
2264        fn _type_assertion(
2265            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2266        ) {
2267            match _t {
2268                alloy_sol_types::private::AssertTypeEq::<
2269                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2270                >(_) => {}
2271            }
2272        }
2273        #[automatically_derived]
2274        #[doc(hidden)]
2275        impl ::core::convert::From<ReentrancyGuardReentrantCall>
2276        for UnderlyingRustTuple<'_> {
2277            fn from(value: ReentrancyGuardReentrantCall) -> Self {
2278                ()
2279            }
2280        }
2281        #[automatically_derived]
2282        #[doc(hidden)]
2283        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2284        for ReentrancyGuardReentrantCall {
2285            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2286                Self
2287            }
2288        }
2289        #[automatically_derived]
2290        impl alloy_sol_types::SolError for ReentrancyGuardReentrantCall {
2291            type Parameters<'a> = UnderlyingSolTuple<'a>;
2292            type Token<'a> = <Self::Parameters<
2293                'a,
2294            > as alloy_sol_types::SolType>::Token<'a>;
2295            const SIGNATURE: &'static str = "ReentrancyGuardReentrantCall()";
2296            const SELECTOR: [u8; 4] = [62u8, 229u8, 174u8, 181u8];
2297            #[inline]
2298            fn new<'a>(
2299                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2300            ) -> Self {
2301                tuple.into()
2302            }
2303            #[inline]
2304            fn tokenize(&self) -> Self::Token<'_> {
2305                ()
2306            }
2307            #[inline]
2308            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2309                <Self::Parameters<
2310                    '_,
2311                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2312                    .map(Self::new)
2313            }
2314        }
2315    };
2316    #[derive(serde::Serialize, serde::Deserialize)]
2317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2318    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
2319```solidity
2320error UUPSUnauthorizedCallContext();
2321```*/
2322    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2323    #[derive(Clone)]
2324    pub struct UUPSUnauthorizedCallContext;
2325    #[allow(
2326        non_camel_case_types,
2327        non_snake_case,
2328        clippy::pub_underscore_fields,
2329        clippy::style
2330    )]
2331    const _: () = {
2332        use alloy::sol_types as alloy_sol_types;
2333        #[doc(hidden)]
2334        #[allow(dead_code)]
2335        type UnderlyingSolTuple<'a> = ();
2336        #[doc(hidden)]
2337        type UnderlyingRustTuple<'a> = ();
2338        #[cfg(test)]
2339        #[allow(dead_code, unreachable_patterns)]
2340        fn _type_assertion(
2341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2342        ) {
2343            match _t {
2344                alloy_sol_types::private::AssertTypeEq::<
2345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2346                >(_) => {}
2347            }
2348        }
2349        #[automatically_derived]
2350        #[doc(hidden)]
2351        impl ::core::convert::From<UUPSUnauthorizedCallContext>
2352        for UnderlyingRustTuple<'_> {
2353            fn from(value: UUPSUnauthorizedCallContext) -> Self {
2354                ()
2355            }
2356        }
2357        #[automatically_derived]
2358        #[doc(hidden)]
2359        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2360        for UUPSUnauthorizedCallContext {
2361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2362                Self
2363            }
2364        }
2365        #[automatically_derived]
2366        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
2367            type Parameters<'a> = UnderlyingSolTuple<'a>;
2368            type Token<'a> = <Self::Parameters<
2369                'a,
2370            > as alloy_sol_types::SolType>::Token<'a>;
2371            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
2372            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
2373            #[inline]
2374            fn new<'a>(
2375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2376            ) -> Self {
2377                tuple.into()
2378            }
2379            #[inline]
2380            fn tokenize(&self) -> Self::Token<'_> {
2381                ()
2382            }
2383            #[inline]
2384            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2385                <Self::Parameters<
2386                    '_,
2387                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2388                    .map(Self::new)
2389            }
2390        }
2391    };
2392    #[derive(serde::Serialize, serde::Deserialize)]
2393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2394    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
2395```solidity
2396error UUPSUnsupportedProxiableUUID(bytes32 slot);
2397```*/
2398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2399    #[derive(Clone)]
2400    pub struct UUPSUnsupportedProxiableUUID {
2401        #[allow(missing_docs)]
2402        pub slot: alloy::sol_types::private::FixedBytes<32>,
2403    }
2404    #[allow(
2405        non_camel_case_types,
2406        non_snake_case,
2407        clippy::pub_underscore_fields,
2408        clippy::style
2409    )]
2410    const _: () = {
2411        use alloy::sol_types as alloy_sol_types;
2412        #[doc(hidden)]
2413        #[allow(dead_code)]
2414        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2415        #[doc(hidden)]
2416        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
2417        #[cfg(test)]
2418        #[allow(dead_code, unreachable_patterns)]
2419        fn _type_assertion(
2420            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2421        ) {
2422            match _t {
2423                alloy_sol_types::private::AssertTypeEq::<
2424                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2425                >(_) => {}
2426            }
2427        }
2428        #[automatically_derived]
2429        #[doc(hidden)]
2430        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
2431        for UnderlyingRustTuple<'_> {
2432            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
2433                (value.slot,)
2434            }
2435        }
2436        #[automatically_derived]
2437        #[doc(hidden)]
2438        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2439        for UUPSUnsupportedProxiableUUID {
2440            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2441                Self { slot: tuple.0 }
2442            }
2443        }
2444        #[automatically_derived]
2445        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
2446            type Parameters<'a> = UnderlyingSolTuple<'a>;
2447            type Token<'a> = <Self::Parameters<
2448                'a,
2449            > as alloy_sol_types::SolType>::Token<'a>;
2450            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
2451            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
2452            #[inline]
2453            fn new<'a>(
2454                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2455            ) -> Self {
2456                tuple.into()
2457            }
2458            #[inline]
2459            fn tokenize(&self) -> Self::Token<'_> {
2460                (
2461                    <alloy::sol_types::sol_data::FixedBytes<
2462                        32,
2463                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
2464                )
2465            }
2466            #[inline]
2467            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2468                <Self::Parameters<
2469                    '_,
2470                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2471                    .map(Self::new)
2472            }
2473        }
2474    };
2475    #[derive(serde::Serialize, serde::Deserialize)]
2476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2477    /**Custom error with signature `ZeroAdminAddress()` and selector `0x3ef39b81`.
2478```solidity
2479error ZeroAdminAddress();
2480```*/
2481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2482    #[derive(Clone)]
2483    pub struct ZeroAdminAddress;
2484    #[allow(
2485        non_camel_case_types,
2486        non_snake_case,
2487        clippy::pub_underscore_fields,
2488        clippy::style
2489    )]
2490    const _: () = {
2491        use alloy::sol_types as alloy_sol_types;
2492        #[doc(hidden)]
2493        #[allow(dead_code)]
2494        type UnderlyingSolTuple<'a> = ();
2495        #[doc(hidden)]
2496        type UnderlyingRustTuple<'a> = ();
2497        #[cfg(test)]
2498        #[allow(dead_code, unreachable_patterns)]
2499        fn _type_assertion(
2500            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2501        ) {
2502            match _t {
2503                alloy_sol_types::private::AssertTypeEq::<
2504                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2505                >(_) => {}
2506            }
2507        }
2508        #[automatically_derived]
2509        #[doc(hidden)]
2510        impl ::core::convert::From<ZeroAdminAddress> for UnderlyingRustTuple<'_> {
2511            fn from(value: ZeroAdminAddress) -> Self {
2512                ()
2513            }
2514        }
2515        #[automatically_derived]
2516        #[doc(hidden)]
2517        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAdminAddress {
2518            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2519                Self
2520            }
2521        }
2522        #[automatically_derived]
2523        impl alloy_sol_types::SolError for ZeroAdminAddress {
2524            type Parameters<'a> = UnderlyingSolTuple<'a>;
2525            type Token<'a> = <Self::Parameters<
2526                'a,
2527            > as alloy_sol_types::SolType>::Token<'a>;
2528            const SIGNATURE: &'static str = "ZeroAdminAddress()";
2529            const SELECTOR: [u8; 4] = [62u8, 243u8, 155u8, 129u8];
2530            #[inline]
2531            fn new<'a>(
2532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2533            ) -> Self {
2534                tuple.into()
2535            }
2536            #[inline]
2537            fn tokenize(&self) -> Self::Token<'_> {
2538                ()
2539            }
2540            #[inline]
2541            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2542                <Self::Parameters<
2543                    '_,
2544                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2545                    .map(Self::new)
2546            }
2547        }
2548    };
2549    #[derive(serde::Serialize, serde::Deserialize)]
2550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2551    /**Custom error with signature `ZeroDailyLimit()` and selector `0x9b11a8bd`.
2552```solidity
2553error ZeroDailyLimit();
2554```*/
2555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2556    #[derive(Clone)]
2557    pub struct ZeroDailyLimit;
2558    #[allow(
2559        non_camel_case_types,
2560        non_snake_case,
2561        clippy::pub_underscore_fields,
2562        clippy::style
2563    )]
2564    const _: () = {
2565        use alloy::sol_types as alloy_sol_types;
2566        #[doc(hidden)]
2567        #[allow(dead_code)]
2568        type UnderlyingSolTuple<'a> = ();
2569        #[doc(hidden)]
2570        type UnderlyingRustTuple<'a> = ();
2571        #[cfg(test)]
2572        #[allow(dead_code, unreachable_patterns)]
2573        fn _type_assertion(
2574            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2575        ) {
2576            match _t {
2577                alloy_sol_types::private::AssertTypeEq::<
2578                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2579                >(_) => {}
2580            }
2581        }
2582        #[automatically_derived]
2583        #[doc(hidden)]
2584        impl ::core::convert::From<ZeroDailyLimit> for UnderlyingRustTuple<'_> {
2585            fn from(value: ZeroDailyLimit) -> Self {
2586                ()
2587            }
2588        }
2589        #[automatically_derived]
2590        #[doc(hidden)]
2591        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroDailyLimit {
2592            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2593                Self
2594            }
2595        }
2596        #[automatically_derived]
2597        impl alloy_sol_types::SolError for ZeroDailyLimit {
2598            type Parameters<'a> = UnderlyingSolTuple<'a>;
2599            type Token<'a> = <Self::Parameters<
2600                'a,
2601            > as alloy_sol_types::SolType>::Token<'a>;
2602            const SIGNATURE: &'static str = "ZeroDailyLimit()";
2603            const SELECTOR: [u8; 4] = [155u8, 17u8, 168u8, 189u8];
2604            #[inline]
2605            fn new<'a>(
2606                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2607            ) -> Self {
2608                tuple.into()
2609            }
2610            #[inline]
2611            fn tokenize(&self) -> Self::Token<'_> {
2612                ()
2613            }
2614            #[inline]
2615            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2616                <Self::Parameters<
2617                    '_,
2618                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2619                    .map(Self::new)
2620            }
2621        }
2622    };
2623    #[derive(serde::Serialize, serde::Deserialize)]
2624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2625    /**Custom error with signature `ZeroLightClientAddress()` and selector `0xfcabddbd`.
2626```solidity
2627error ZeroLightClientAddress();
2628```*/
2629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2630    #[derive(Clone)]
2631    pub struct ZeroLightClientAddress;
2632    #[allow(
2633        non_camel_case_types,
2634        non_snake_case,
2635        clippy::pub_underscore_fields,
2636        clippy::style
2637    )]
2638    const _: () = {
2639        use alloy::sol_types as alloy_sol_types;
2640        #[doc(hidden)]
2641        #[allow(dead_code)]
2642        type UnderlyingSolTuple<'a> = ();
2643        #[doc(hidden)]
2644        type UnderlyingRustTuple<'a> = ();
2645        #[cfg(test)]
2646        #[allow(dead_code, unreachable_patterns)]
2647        fn _type_assertion(
2648            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2649        ) {
2650            match _t {
2651                alloy_sol_types::private::AssertTypeEq::<
2652                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2653                >(_) => {}
2654            }
2655        }
2656        #[automatically_derived]
2657        #[doc(hidden)]
2658        impl ::core::convert::From<ZeroLightClientAddress> for UnderlyingRustTuple<'_> {
2659            fn from(value: ZeroLightClientAddress) -> Self {
2660                ()
2661            }
2662        }
2663        #[automatically_derived]
2664        #[doc(hidden)]
2665        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroLightClientAddress {
2666            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2667                Self
2668            }
2669        }
2670        #[automatically_derived]
2671        impl alloy_sol_types::SolError for ZeroLightClientAddress {
2672            type Parameters<'a> = UnderlyingSolTuple<'a>;
2673            type Token<'a> = <Self::Parameters<
2674                'a,
2675            > as alloy_sol_types::SolType>::Token<'a>;
2676            const SIGNATURE: &'static str = "ZeroLightClientAddress()";
2677            const SELECTOR: [u8; 4] = [252u8, 171u8, 221u8, 189u8];
2678            #[inline]
2679            fn new<'a>(
2680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2681            ) -> Self {
2682                tuple.into()
2683            }
2684            #[inline]
2685            fn tokenize(&self) -> Self::Token<'_> {
2686                ()
2687            }
2688            #[inline]
2689            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2690                <Self::Parameters<
2691                    '_,
2692                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2693                    .map(Self::new)
2694            }
2695        }
2696    };
2697    #[derive(serde::Serialize, serde::Deserialize)]
2698    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2699    /**Custom error with signature `ZeroPauserAddress()` and selector `0xa74995ab`.
2700```solidity
2701error ZeroPauserAddress();
2702```*/
2703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2704    #[derive(Clone)]
2705    pub struct ZeroPauserAddress;
2706    #[allow(
2707        non_camel_case_types,
2708        non_snake_case,
2709        clippy::pub_underscore_fields,
2710        clippy::style
2711    )]
2712    const _: () = {
2713        use alloy::sol_types as alloy_sol_types;
2714        #[doc(hidden)]
2715        #[allow(dead_code)]
2716        type UnderlyingSolTuple<'a> = ();
2717        #[doc(hidden)]
2718        type UnderlyingRustTuple<'a> = ();
2719        #[cfg(test)]
2720        #[allow(dead_code, unreachable_patterns)]
2721        fn _type_assertion(
2722            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2723        ) {
2724            match _t {
2725                alloy_sol_types::private::AssertTypeEq::<
2726                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2727                >(_) => {}
2728            }
2729        }
2730        #[automatically_derived]
2731        #[doc(hidden)]
2732        impl ::core::convert::From<ZeroPauserAddress> for UnderlyingRustTuple<'_> {
2733            fn from(value: ZeroPauserAddress) -> Self {
2734                ()
2735            }
2736        }
2737        #[automatically_derived]
2738        #[doc(hidden)]
2739        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroPauserAddress {
2740            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2741                Self
2742            }
2743        }
2744        #[automatically_derived]
2745        impl alloy_sol_types::SolError for ZeroPauserAddress {
2746            type Parameters<'a> = UnderlyingSolTuple<'a>;
2747            type Token<'a> = <Self::Parameters<
2748                'a,
2749            > as alloy_sol_types::SolType>::Token<'a>;
2750            const SIGNATURE: &'static str = "ZeroPauserAddress()";
2751            const SELECTOR: [u8; 4] = [167u8, 73u8, 149u8, 171u8];
2752            #[inline]
2753            fn new<'a>(
2754                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2755            ) -> Self {
2756                tuple.into()
2757            }
2758            #[inline]
2759            fn tokenize(&self) -> Self::Token<'_> {
2760                ()
2761            }
2762            #[inline]
2763            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2764                <Self::Parameters<
2765                    '_,
2766                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2767                    .map(Self::new)
2768            }
2769        }
2770    };
2771    #[derive(serde::Serialize, serde::Deserialize)]
2772    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2773    /**Custom error with signature `ZeroTokenAddress()` and selector `0x6b093aad`.
2774```solidity
2775error ZeroTokenAddress();
2776```*/
2777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2778    #[derive(Clone)]
2779    pub struct ZeroTokenAddress;
2780    #[allow(
2781        non_camel_case_types,
2782        non_snake_case,
2783        clippy::pub_underscore_fields,
2784        clippy::style
2785    )]
2786    const _: () = {
2787        use alloy::sol_types as alloy_sol_types;
2788        #[doc(hidden)]
2789        #[allow(dead_code)]
2790        type UnderlyingSolTuple<'a> = ();
2791        #[doc(hidden)]
2792        type UnderlyingRustTuple<'a> = ();
2793        #[cfg(test)]
2794        #[allow(dead_code, unreachable_patterns)]
2795        fn _type_assertion(
2796            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2797        ) {
2798            match _t {
2799                alloy_sol_types::private::AssertTypeEq::<
2800                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2801                >(_) => {}
2802            }
2803        }
2804        #[automatically_derived]
2805        #[doc(hidden)]
2806        impl ::core::convert::From<ZeroTokenAddress> for UnderlyingRustTuple<'_> {
2807            fn from(value: ZeroTokenAddress) -> Self {
2808                ()
2809            }
2810        }
2811        #[automatically_derived]
2812        #[doc(hidden)]
2813        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroTokenAddress {
2814            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2815                Self
2816            }
2817        }
2818        #[automatically_derived]
2819        impl alloy_sol_types::SolError for ZeroTokenAddress {
2820            type Parameters<'a> = UnderlyingSolTuple<'a>;
2821            type Token<'a> = <Self::Parameters<
2822                'a,
2823            > as alloy_sol_types::SolType>::Token<'a>;
2824            const SIGNATURE: &'static str = "ZeroTokenAddress()";
2825            const SELECTOR: [u8; 4] = [107u8, 9u8, 58u8, 173u8];
2826            #[inline]
2827            fn new<'a>(
2828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2829            ) -> Self {
2830                tuple.into()
2831            }
2832            #[inline]
2833            fn tokenize(&self) -> Self::Token<'_> {
2834                ()
2835            }
2836            #[inline]
2837            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2838                <Self::Parameters<
2839                    '_,
2840                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2841                    .map(Self::new)
2842            }
2843        }
2844    };
2845    #[derive(serde::Serialize, serde::Deserialize)]
2846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2847    /**Custom error with signature `ZeroTotalSupply()` and selector `0x48b50023`.
2848```solidity
2849error ZeroTotalSupply();
2850```*/
2851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2852    #[derive(Clone)]
2853    pub struct ZeroTotalSupply;
2854    #[allow(
2855        non_camel_case_types,
2856        non_snake_case,
2857        clippy::pub_underscore_fields,
2858        clippy::style
2859    )]
2860    const _: () = {
2861        use alloy::sol_types as alloy_sol_types;
2862        #[doc(hidden)]
2863        #[allow(dead_code)]
2864        type UnderlyingSolTuple<'a> = ();
2865        #[doc(hidden)]
2866        type UnderlyingRustTuple<'a> = ();
2867        #[cfg(test)]
2868        #[allow(dead_code, unreachable_patterns)]
2869        fn _type_assertion(
2870            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2871        ) {
2872            match _t {
2873                alloy_sol_types::private::AssertTypeEq::<
2874                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2875                >(_) => {}
2876            }
2877        }
2878        #[automatically_derived]
2879        #[doc(hidden)]
2880        impl ::core::convert::From<ZeroTotalSupply> for UnderlyingRustTuple<'_> {
2881            fn from(value: ZeroTotalSupply) -> Self {
2882                ()
2883            }
2884        }
2885        #[automatically_derived]
2886        #[doc(hidden)]
2887        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroTotalSupply {
2888            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2889                Self
2890            }
2891        }
2892        #[automatically_derived]
2893        impl alloy_sol_types::SolError for ZeroTotalSupply {
2894            type Parameters<'a> = UnderlyingSolTuple<'a>;
2895            type Token<'a> = <Self::Parameters<
2896                'a,
2897            > as alloy_sol_types::SolType>::Token<'a>;
2898            const SIGNATURE: &'static str = "ZeroTotalSupply()";
2899            const SELECTOR: [u8; 4] = [72u8, 181u8, 0u8, 35u8];
2900            #[inline]
2901            fn new<'a>(
2902                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2903            ) -> Self {
2904                tuple.into()
2905            }
2906            #[inline]
2907            fn tokenize(&self) -> Self::Token<'_> {
2908                ()
2909            }
2910            #[inline]
2911            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2912                <Self::Parameters<
2913                    '_,
2914                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2915                    .map(Self::new)
2916            }
2917        }
2918    };
2919    #[derive(serde::Serialize, serde::Deserialize)]
2920    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2921    /**Event with signature `DailyLimitUpdated(uint256,uint256)` and selector `0x207c4cbdf55ec315a13f0d5e047732ec5d947da056e706593aa509909941cedf`.
2922```solidity
2923event DailyLimitUpdated(uint256 oldLimit, uint256 newLimit);
2924```*/
2925    #[allow(
2926        non_camel_case_types,
2927        non_snake_case,
2928        clippy::pub_underscore_fields,
2929        clippy::style
2930    )]
2931    #[derive(Clone)]
2932    pub struct DailyLimitUpdated {
2933        #[allow(missing_docs)]
2934        pub oldLimit: alloy::sol_types::private::primitives::aliases::U256,
2935        #[allow(missing_docs)]
2936        pub newLimit: alloy::sol_types::private::primitives::aliases::U256,
2937    }
2938    #[allow(
2939        non_camel_case_types,
2940        non_snake_case,
2941        clippy::pub_underscore_fields,
2942        clippy::style
2943    )]
2944    const _: () = {
2945        use alloy::sol_types as alloy_sol_types;
2946        #[automatically_derived]
2947        impl alloy_sol_types::SolEvent for DailyLimitUpdated {
2948            type DataTuple<'a> = (
2949                alloy::sol_types::sol_data::Uint<256>,
2950                alloy::sol_types::sol_data::Uint<256>,
2951            );
2952            type DataToken<'a> = <Self::DataTuple<
2953                'a,
2954            > as alloy_sol_types::SolType>::Token<'a>;
2955            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2956            const SIGNATURE: &'static str = "DailyLimitUpdated(uint256,uint256)";
2957            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2958                32u8, 124u8, 76u8, 189u8, 245u8, 94u8, 195u8, 21u8, 161u8, 63u8, 13u8,
2959                94u8, 4u8, 119u8, 50u8, 236u8, 93u8, 148u8, 125u8, 160u8, 86u8, 231u8,
2960                6u8, 89u8, 58u8, 165u8, 9u8, 144u8, 153u8, 65u8, 206u8, 223u8,
2961            ]);
2962            const ANONYMOUS: bool = false;
2963            #[allow(unused_variables)]
2964            #[inline]
2965            fn new(
2966                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2967                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2968            ) -> Self {
2969                Self {
2970                    oldLimit: data.0,
2971                    newLimit: data.1,
2972                }
2973            }
2974            #[inline]
2975            fn check_signature(
2976                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2977            ) -> alloy_sol_types::Result<()> {
2978                if topics.0 != Self::SIGNATURE_HASH {
2979                    return Err(
2980                        alloy_sol_types::Error::invalid_event_signature_hash(
2981                            Self::SIGNATURE,
2982                            topics.0,
2983                            Self::SIGNATURE_HASH,
2984                        ),
2985                    );
2986                }
2987                Ok(())
2988            }
2989            #[inline]
2990            fn tokenize_body(&self) -> Self::DataToken<'_> {
2991                (
2992                    <alloy::sol_types::sol_data::Uint<
2993                        256,
2994                    > as alloy_sol_types::SolType>::tokenize(&self.oldLimit),
2995                    <alloy::sol_types::sol_data::Uint<
2996                        256,
2997                    > as alloy_sol_types::SolType>::tokenize(&self.newLimit),
2998                )
2999            }
3000            #[inline]
3001            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3002                (Self::SIGNATURE_HASH.into(),)
3003            }
3004            #[inline]
3005            fn encode_topics_raw(
3006                &self,
3007                out: &mut [alloy_sol_types::abi::token::WordToken],
3008            ) -> alloy_sol_types::Result<()> {
3009                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3010                    return Err(alloy_sol_types::Error::Overrun);
3011                }
3012                out[0usize] = alloy_sol_types::abi::token::WordToken(
3013                    Self::SIGNATURE_HASH,
3014                );
3015                Ok(())
3016            }
3017        }
3018        #[automatically_derived]
3019        impl alloy_sol_types::private::IntoLogData for DailyLimitUpdated {
3020            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3021                From::from(self)
3022            }
3023            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3024                From::from(&self)
3025            }
3026        }
3027        #[automatically_derived]
3028        impl From<&DailyLimitUpdated> for alloy_sol_types::private::LogData {
3029            #[inline]
3030            fn from(this: &DailyLimitUpdated) -> alloy_sol_types::private::LogData {
3031                alloy_sol_types::SolEvent::encode_log_data(this)
3032            }
3033        }
3034    };
3035    #[derive(serde::Serialize, serde::Deserialize)]
3036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3037    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
3038```solidity
3039event Initialized(uint64 version);
3040```*/
3041    #[allow(
3042        non_camel_case_types,
3043        non_snake_case,
3044        clippy::pub_underscore_fields,
3045        clippy::style
3046    )]
3047    #[derive(Clone)]
3048    pub struct Initialized {
3049        #[allow(missing_docs)]
3050        pub version: u64,
3051    }
3052    #[allow(
3053        non_camel_case_types,
3054        non_snake_case,
3055        clippy::pub_underscore_fields,
3056        clippy::style
3057    )]
3058    const _: () = {
3059        use alloy::sol_types as alloy_sol_types;
3060        #[automatically_derived]
3061        impl alloy_sol_types::SolEvent for Initialized {
3062            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
3063            type DataToken<'a> = <Self::DataTuple<
3064                'a,
3065            > as alloy_sol_types::SolType>::Token<'a>;
3066            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3067            const SIGNATURE: &'static str = "Initialized(uint64)";
3068            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3069                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
3070                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
3071                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
3072            ]);
3073            const ANONYMOUS: bool = false;
3074            #[allow(unused_variables)]
3075            #[inline]
3076            fn new(
3077                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3078                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3079            ) -> Self {
3080                Self { version: data.0 }
3081            }
3082            #[inline]
3083            fn check_signature(
3084                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3085            ) -> alloy_sol_types::Result<()> {
3086                if topics.0 != Self::SIGNATURE_HASH {
3087                    return Err(
3088                        alloy_sol_types::Error::invalid_event_signature_hash(
3089                            Self::SIGNATURE,
3090                            topics.0,
3091                            Self::SIGNATURE_HASH,
3092                        ),
3093                    );
3094                }
3095                Ok(())
3096            }
3097            #[inline]
3098            fn tokenize_body(&self) -> Self::DataToken<'_> {
3099                (
3100                    <alloy::sol_types::sol_data::Uint<
3101                        64,
3102                    > as alloy_sol_types::SolType>::tokenize(&self.version),
3103                )
3104            }
3105            #[inline]
3106            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3107                (Self::SIGNATURE_HASH.into(),)
3108            }
3109            #[inline]
3110            fn encode_topics_raw(
3111                &self,
3112                out: &mut [alloy_sol_types::abi::token::WordToken],
3113            ) -> alloy_sol_types::Result<()> {
3114                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3115                    return Err(alloy_sol_types::Error::Overrun);
3116                }
3117                out[0usize] = alloy_sol_types::abi::token::WordToken(
3118                    Self::SIGNATURE_HASH,
3119                );
3120                Ok(())
3121            }
3122        }
3123        #[automatically_derived]
3124        impl alloy_sol_types::private::IntoLogData for Initialized {
3125            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3126                From::from(self)
3127            }
3128            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3129                From::from(&self)
3130            }
3131        }
3132        #[automatically_derived]
3133        impl From<&Initialized> for alloy_sol_types::private::LogData {
3134            #[inline]
3135            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
3136                alloy_sol_types::SolEvent::encode_log_data(this)
3137            }
3138        }
3139    };
3140    #[derive(serde::Serialize, serde::Deserialize)]
3141    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3142    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
3143```solidity
3144event Paused(address account);
3145```*/
3146    #[allow(
3147        non_camel_case_types,
3148        non_snake_case,
3149        clippy::pub_underscore_fields,
3150        clippy::style
3151    )]
3152    #[derive(Clone)]
3153    pub struct Paused {
3154        #[allow(missing_docs)]
3155        pub account: alloy::sol_types::private::Address,
3156    }
3157    #[allow(
3158        non_camel_case_types,
3159        non_snake_case,
3160        clippy::pub_underscore_fields,
3161        clippy::style
3162    )]
3163    const _: () = {
3164        use alloy::sol_types as alloy_sol_types;
3165        #[automatically_derived]
3166        impl alloy_sol_types::SolEvent for Paused {
3167            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3168            type DataToken<'a> = <Self::DataTuple<
3169                'a,
3170            > as alloy_sol_types::SolType>::Token<'a>;
3171            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3172            const SIGNATURE: &'static str = "Paused(address)";
3173            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3174                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
3175                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
3176                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
3177            ]);
3178            const ANONYMOUS: bool = false;
3179            #[allow(unused_variables)]
3180            #[inline]
3181            fn new(
3182                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3183                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3184            ) -> Self {
3185                Self { account: data.0 }
3186            }
3187            #[inline]
3188            fn check_signature(
3189                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3190            ) -> alloy_sol_types::Result<()> {
3191                if topics.0 != Self::SIGNATURE_HASH {
3192                    return Err(
3193                        alloy_sol_types::Error::invalid_event_signature_hash(
3194                            Self::SIGNATURE,
3195                            topics.0,
3196                            Self::SIGNATURE_HASH,
3197                        ),
3198                    );
3199                }
3200                Ok(())
3201            }
3202            #[inline]
3203            fn tokenize_body(&self) -> Self::DataToken<'_> {
3204                (
3205                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3206                        &self.account,
3207                    ),
3208                )
3209            }
3210            #[inline]
3211            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3212                (Self::SIGNATURE_HASH.into(),)
3213            }
3214            #[inline]
3215            fn encode_topics_raw(
3216                &self,
3217                out: &mut [alloy_sol_types::abi::token::WordToken],
3218            ) -> alloy_sol_types::Result<()> {
3219                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3220                    return Err(alloy_sol_types::Error::Overrun);
3221                }
3222                out[0usize] = alloy_sol_types::abi::token::WordToken(
3223                    Self::SIGNATURE_HASH,
3224                );
3225                Ok(())
3226            }
3227        }
3228        #[automatically_derived]
3229        impl alloy_sol_types::private::IntoLogData for Paused {
3230            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3231                From::from(self)
3232            }
3233            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3234                From::from(&self)
3235            }
3236        }
3237        #[automatically_derived]
3238        impl From<&Paused> for alloy_sol_types::private::LogData {
3239            #[inline]
3240            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
3241                alloy_sol_types::SolEvent::encode_log_data(this)
3242            }
3243        }
3244    };
3245    #[derive(serde::Serialize, serde::Deserialize)]
3246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3247    /**Event with signature `RewardsClaimed(address,uint256)` and selector `0xfc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe`.
3248```solidity
3249event RewardsClaimed(address indexed user, uint256 amount);
3250```*/
3251    #[allow(
3252        non_camel_case_types,
3253        non_snake_case,
3254        clippy::pub_underscore_fields,
3255        clippy::style
3256    )]
3257    #[derive(Clone)]
3258    pub struct RewardsClaimed {
3259        #[allow(missing_docs)]
3260        pub user: alloy::sol_types::private::Address,
3261        #[allow(missing_docs)]
3262        pub amount: alloy::sol_types::private::primitives::aliases::U256,
3263    }
3264    #[allow(
3265        non_camel_case_types,
3266        non_snake_case,
3267        clippy::pub_underscore_fields,
3268        clippy::style
3269    )]
3270    const _: () = {
3271        use alloy::sol_types as alloy_sol_types;
3272        #[automatically_derived]
3273        impl alloy_sol_types::SolEvent for RewardsClaimed {
3274            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3275            type DataToken<'a> = <Self::DataTuple<
3276                'a,
3277            > as alloy_sol_types::SolType>::Token<'a>;
3278            type TopicList = (
3279                alloy_sol_types::sol_data::FixedBytes<32>,
3280                alloy::sol_types::sol_data::Address,
3281            );
3282            const SIGNATURE: &'static str = "RewardsClaimed(address,uint256)";
3283            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3284                252u8, 48u8, 205u8, 222u8, 163u8, 142u8, 43u8, 244u8, 214u8, 234u8,
3285                125u8, 63u8, 158u8, 211u8, 182u8, 173u8, 127u8, 23u8, 100u8, 25u8, 244u8,
3286                150u8, 59u8, 216u8, 19u8, 24u8, 6u8, 122u8, 74u8, 238u8, 115u8, 254u8,
3287            ]);
3288            const ANONYMOUS: bool = false;
3289            #[allow(unused_variables)]
3290            #[inline]
3291            fn new(
3292                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3293                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3294            ) -> Self {
3295                Self {
3296                    user: topics.1,
3297                    amount: data.0,
3298                }
3299            }
3300            #[inline]
3301            fn check_signature(
3302                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3303            ) -> alloy_sol_types::Result<()> {
3304                if topics.0 != Self::SIGNATURE_HASH {
3305                    return Err(
3306                        alloy_sol_types::Error::invalid_event_signature_hash(
3307                            Self::SIGNATURE,
3308                            topics.0,
3309                            Self::SIGNATURE_HASH,
3310                        ),
3311                    );
3312                }
3313                Ok(())
3314            }
3315            #[inline]
3316            fn tokenize_body(&self) -> Self::DataToken<'_> {
3317                (
3318                    <alloy::sol_types::sol_data::Uint<
3319                        256,
3320                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
3321                )
3322            }
3323            #[inline]
3324            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3325                (Self::SIGNATURE_HASH.into(), self.user.clone())
3326            }
3327            #[inline]
3328            fn encode_topics_raw(
3329                &self,
3330                out: &mut [alloy_sol_types::abi::token::WordToken],
3331            ) -> alloy_sol_types::Result<()> {
3332                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3333                    return Err(alloy_sol_types::Error::Overrun);
3334                }
3335                out[0usize] = alloy_sol_types::abi::token::WordToken(
3336                    Self::SIGNATURE_HASH,
3337                );
3338                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3339                    &self.user,
3340                );
3341                Ok(())
3342            }
3343        }
3344        #[automatically_derived]
3345        impl alloy_sol_types::private::IntoLogData for RewardsClaimed {
3346            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3347                From::from(self)
3348            }
3349            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3350                From::from(&self)
3351            }
3352        }
3353        #[automatically_derived]
3354        impl From<&RewardsClaimed> for alloy_sol_types::private::LogData {
3355            #[inline]
3356            fn from(this: &RewardsClaimed) -> alloy_sol_types::private::LogData {
3357                alloy_sol_types::SolEvent::encode_log_data(this)
3358            }
3359        }
3360    };
3361    #[derive(serde::Serialize, serde::Deserialize)]
3362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3363    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
3364```solidity
3365event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
3366```*/
3367    #[allow(
3368        non_camel_case_types,
3369        non_snake_case,
3370        clippy::pub_underscore_fields,
3371        clippy::style
3372    )]
3373    #[derive(Clone)]
3374    pub struct RoleAdminChanged {
3375        #[allow(missing_docs)]
3376        pub role: alloy::sol_types::private::FixedBytes<32>,
3377        #[allow(missing_docs)]
3378        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
3379        #[allow(missing_docs)]
3380        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
3381    }
3382    #[allow(
3383        non_camel_case_types,
3384        non_snake_case,
3385        clippy::pub_underscore_fields,
3386        clippy::style
3387    )]
3388    const _: () = {
3389        use alloy::sol_types as alloy_sol_types;
3390        #[automatically_derived]
3391        impl alloy_sol_types::SolEvent for RoleAdminChanged {
3392            type DataTuple<'a> = ();
3393            type DataToken<'a> = <Self::DataTuple<
3394                'a,
3395            > as alloy_sol_types::SolType>::Token<'a>;
3396            type TopicList = (
3397                alloy_sol_types::sol_data::FixedBytes<32>,
3398                alloy::sol_types::sol_data::FixedBytes<32>,
3399                alloy::sol_types::sol_data::FixedBytes<32>,
3400                alloy::sol_types::sol_data::FixedBytes<32>,
3401            );
3402            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
3403            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3404                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
3405                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
3406                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
3407            ]);
3408            const ANONYMOUS: bool = false;
3409            #[allow(unused_variables)]
3410            #[inline]
3411            fn new(
3412                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3413                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3414            ) -> Self {
3415                Self {
3416                    role: topics.1,
3417                    previousAdminRole: topics.2,
3418                    newAdminRole: topics.3,
3419                }
3420            }
3421            #[inline]
3422            fn check_signature(
3423                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3424            ) -> alloy_sol_types::Result<()> {
3425                if topics.0 != Self::SIGNATURE_HASH {
3426                    return Err(
3427                        alloy_sol_types::Error::invalid_event_signature_hash(
3428                            Self::SIGNATURE,
3429                            topics.0,
3430                            Self::SIGNATURE_HASH,
3431                        ),
3432                    );
3433                }
3434                Ok(())
3435            }
3436            #[inline]
3437            fn tokenize_body(&self) -> Self::DataToken<'_> {
3438                ()
3439            }
3440            #[inline]
3441            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3442                (
3443                    Self::SIGNATURE_HASH.into(),
3444                    self.role.clone(),
3445                    self.previousAdminRole.clone(),
3446                    self.newAdminRole.clone(),
3447                )
3448            }
3449            #[inline]
3450            fn encode_topics_raw(
3451                &self,
3452                out: &mut [alloy_sol_types::abi::token::WordToken],
3453            ) -> alloy_sol_types::Result<()> {
3454                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3455                    return Err(alloy_sol_types::Error::Overrun);
3456                }
3457                out[0usize] = alloy_sol_types::abi::token::WordToken(
3458                    Self::SIGNATURE_HASH,
3459                );
3460                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3461                    32,
3462                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3463                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
3464                    32,
3465                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
3466                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
3467                    32,
3468                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
3469                Ok(())
3470            }
3471        }
3472        #[automatically_derived]
3473        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
3474            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3475                From::from(self)
3476            }
3477            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3478                From::from(&self)
3479            }
3480        }
3481        #[automatically_derived]
3482        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
3483            #[inline]
3484            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
3485                alloy_sol_types::SolEvent::encode_log_data(this)
3486            }
3487        }
3488    };
3489    #[derive(serde::Serialize, serde::Deserialize)]
3490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3491    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
3492```solidity
3493event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
3494```*/
3495    #[allow(
3496        non_camel_case_types,
3497        non_snake_case,
3498        clippy::pub_underscore_fields,
3499        clippy::style
3500    )]
3501    #[derive(Clone)]
3502    pub struct RoleGranted {
3503        #[allow(missing_docs)]
3504        pub role: alloy::sol_types::private::FixedBytes<32>,
3505        #[allow(missing_docs)]
3506        pub account: alloy::sol_types::private::Address,
3507        #[allow(missing_docs)]
3508        pub sender: alloy::sol_types::private::Address,
3509    }
3510    #[allow(
3511        non_camel_case_types,
3512        non_snake_case,
3513        clippy::pub_underscore_fields,
3514        clippy::style
3515    )]
3516    const _: () = {
3517        use alloy::sol_types as alloy_sol_types;
3518        #[automatically_derived]
3519        impl alloy_sol_types::SolEvent for RoleGranted {
3520            type DataTuple<'a> = ();
3521            type DataToken<'a> = <Self::DataTuple<
3522                'a,
3523            > as alloy_sol_types::SolType>::Token<'a>;
3524            type TopicList = (
3525                alloy_sol_types::sol_data::FixedBytes<32>,
3526                alloy::sol_types::sol_data::FixedBytes<32>,
3527                alloy::sol_types::sol_data::Address,
3528                alloy::sol_types::sol_data::Address,
3529            );
3530            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
3531            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3532                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
3533                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
3534                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
3535            ]);
3536            const ANONYMOUS: bool = false;
3537            #[allow(unused_variables)]
3538            #[inline]
3539            fn new(
3540                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3541                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3542            ) -> Self {
3543                Self {
3544                    role: topics.1,
3545                    account: topics.2,
3546                    sender: topics.3,
3547                }
3548            }
3549            #[inline]
3550            fn check_signature(
3551                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3552            ) -> alloy_sol_types::Result<()> {
3553                if topics.0 != Self::SIGNATURE_HASH {
3554                    return Err(
3555                        alloy_sol_types::Error::invalid_event_signature_hash(
3556                            Self::SIGNATURE,
3557                            topics.0,
3558                            Self::SIGNATURE_HASH,
3559                        ),
3560                    );
3561                }
3562                Ok(())
3563            }
3564            #[inline]
3565            fn tokenize_body(&self) -> Self::DataToken<'_> {
3566                ()
3567            }
3568            #[inline]
3569            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3570                (
3571                    Self::SIGNATURE_HASH.into(),
3572                    self.role.clone(),
3573                    self.account.clone(),
3574                    self.sender.clone(),
3575                )
3576            }
3577            #[inline]
3578            fn encode_topics_raw(
3579                &self,
3580                out: &mut [alloy_sol_types::abi::token::WordToken],
3581            ) -> alloy_sol_types::Result<()> {
3582                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3583                    return Err(alloy_sol_types::Error::Overrun);
3584                }
3585                out[0usize] = alloy_sol_types::abi::token::WordToken(
3586                    Self::SIGNATURE_HASH,
3587                );
3588                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3589                    32,
3590                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3591                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3592                    &self.account,
3593                );
3594                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3595                    &self.sender,
3596                );
3597                Ok(())
3598            }
3599        }
3600        #[automatically_derived]
3601        impl alloy_sol_types::private::IntoLogData for RoleGranted {
3602            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3603                From::from(self)
3604            }
3605            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3606                From::from(&self)
3607            }
3608        }
3609        #[automatically_derived]
3610        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
3611            #[inline]
3612            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
3613                alloy_sol_types::SolEvent::encode_log_data(this)
3614            }
3615        }
3616    };
3617    #[derive(serde::Serialize, serde::Deserialize)]
3618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3619    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
3620```solidity
3621event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
3622```*/
3623    #[allow(
3624        non_camel_case_types,
3625        non_snake_case,
3626        clippy::pub_underscore_fields,
3627        clippy::style
3628    )]
3629    #[derive(Clone)]
3630    pub struct RoleRevoked {
3631        #[allow(missing_docs)]
3632        pub role: alloy::sol_types::private::FixedBytes<32>,
3633        #[allow(missing_docs)]
3634        pub account: alloy::sol_types::private::Address,
3635        #[allow(missing_docs)]
3636        pub sender: alloy::sol_types::private::Address,
3637    }
3638    #[allow(
3639        non_camel_case_types,
3640        non_snake_case,
3641        clippy::pub_underscore_fields,
3642        clippy::style
3643    )]
3644    const _: () = {
3645        use alloy::sol_types as alloy_sol_types;
3646        #[automatically_derived]
3647        impl alloy_sol_types::SolEvent for RoleRevoked {
3648            type DataTuple<'a> = ();
3649            type DataToken<'a> = <Self::DataTuple<
3650                'a,
3651            > as alloy_sol_types::SolType>::Token<'a>;
3652            type TopicList = (
3653                alloy_sol_types::sol_data::FixedBytes<32>,
3654                alloy::sol_types::sol_data::FixedBytes<32>,
3655                alloy::sol_types::sol_data::Address,
3656                alloy::sol_types::sol_data::Address,
3657            );
3658            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
3659            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3660                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
3661                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
3662                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
3663            ]);
3664            const ANONYMOUS: bool = false;
3665            #[allow(unused_variables)]
3666            #[inline]
3667            fn new(
3668                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3669                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3670            ) -> Self {
3671                Self {
3672                    role: topics.1,
3673                    account: topics.2,
3674                    sender: topics.3,
3675                }
3676            }
3677            #[inline]
3678            fn check_signature(
3679                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3680            ) -> alloy_sol_types::Result<()> {
3681                if topics.0 != Self::SIGNATURE_HASH {
3682                    return Err(
3683                        alloy_sol_types::Error::invalid_event_signature_hash(
3684                            Self::SIGNATURE,
3685                            topics.0,
3686                            Self::SIGNATURE_HASH,
3687                        ),
3688                    );
3689                }
3690                Ok(())
3691            }
3692            #[inline]
3693            fn tokenize_body(&self) -> Self::DataToken<'_> {
3694                ()
3695            }
3696            #[inline]
3697            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3698                (
3699                    Self::SIGNATURE_HASH.into(),
3700                    self.role.clone(),
3701                    self.account.clone(),
3702                    self.sender.clone(),
3703                )
3704            }
3705            #[inline]
3706            fn encode_topics_raw(
3707                &self,
3708                out: &mut [alloy_sol_types::abi::token::WordToken],
3709            ) -> alloy_sol_types::Result<()> {
3710                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3711                    return Err(alloy_sol_types::Error::Overrun);
3712                }
3713                out[0usize] = alloy_sol_types::abi::token::WordToken(
3714                    Self::SIGNATURE_HASH,
3715                );
3716                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3717                    32,
3718                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3719                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3720                    &self.account,
3721                );
3722                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3723                    &self.sender,
3724                );
3725                Ok(())
3726            }
3727        }
3728        #[automatically_derived]
3729        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
3730            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3731                From::from(self)
3732            }
3733            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3734                From::from(&self)
3735            }
3736        }
3737        #[automatically_derived]
3738        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
3739            #[inline]
3740            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
3741                alloy_sol_types::SolEvent::encode_log_data(this)
3742            }
3743        }
3744    };
3745    #[derive(serde::Serialize, serde::Deserialize)]
3746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3747    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
3748```solidity
3749event Unpaused(address account);
3750```*/
3751    #[allow(
3752        non_camel_case_types,
3753        non_snake_case,
3754        clippy::pub_underscore_fields,
3755        clippy::style
3756    )]
3757    #[derive(Clone)]
3758    pub struct Unpaused {
3759        #[allow(missing_docs)]
3760        pub account: alloy::sol_types::private::Address,
3761    }
3762    #[allow(
3763        non_camel_case_types,
3764        non_snake_case,
3765        clippy::pub_underscore_fields,
3766        clippy::style
3767    )]
3768    const _: () = {
3769        use alloy::sol_types as alloy_sol_types;
3770        #[automatically_derived]
3771        impl alloy_sol_types::SolEvent for Unpaused {
3772            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3773            type DataToken<'a> = <Self::DataTuple<
3774                'a,
3775            > as alloy_sol_types::SolType>::Token<'a>;
3776            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3777            const SIGNATURE: &'static str = "Unpaused(address)";
3778            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3779                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
3780                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
3781                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
3782            ]);
3783            const ANONYMOUS: bool = false;
3784            #[allow(unused_variables)]
3785            #[inline]
3786            fn new(
3787                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3788                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3789            ) -> Self {
3790                Self { account: data.0 }
3791            }
3792            #[inline]
3793            fn check_signature(
3794                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3795            ) -> alloy_sol_types::Result<()> {
3796                if topics.0 != Self::SIGNATURE_HASH {
3797                    return Err(
3798                        alloy_sol_types::Error::invalid_event_signature_hash(
3799                            Self::SIGNATURE,
3800                            topics.0,
3801                            Self::SIGNATURE_HASH,
3802                        ),
3803                    );
3804                }
3805                Ok(())
3806            }
3807            #[inline]
3808            fn tokenize_body(&self) -> Self::DataToken<'_> {
3809                (
3810                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3811                        &self.account,
3812                    ),
3813                )
3814            }
3815            #[inline]
3816            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3817                (Self::SIGNATURE_HASH.into(),)
3818            }
3819            #[inline]
3820            fn encode_topics_raw(
3821                &self,
3822                out: &mut [alloy_sol_types::abi::token::WordToken],
3823            ) -> alloy_sol_types::Result<()> {
3824                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3825                    return Err(alloy_sol_types::Error::Overrun);
3826                }
3827                out[0usize] = alloy_sol_types::abi::token::WordToken(
3828                    Self::SIGNATURE_HASH,
3829                );
3830                Ok(())
3831            }
3832        }
3833        #[automatically_derived]
3834        impl alloy_sol_types::private::IntoLogData for Unpaused {
3835            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3836                From::from(self)
3837            }
3838            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3839                From::from(&self)
3840            }
3841        }
3842        #[automatically_derived]
3843        impl From<&Unpaused> for alloy_sol_types::private::LogData {
3844            #[inline]
3845            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
3846                alloy_sol_types::SolEvent::encode_log_data(this)
3847            }
3848        }
3849    };
3850    #[derive(serde::Serialize, serde::Deserialize)]
3851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3852    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
3853```solidity
3854event Upgraded(address indexed implementation);
3855```*/
3856    #[allow(
3857        non_camel_case_types,
3858        non_snake_case,
3859        clippy::pub_underscore_fields,
3860        clippy::style
3861    )]
3862    #[derive(Clone)]
3863    pub struct Upgraded {
3864        #[allow(missing_docs)]
3865        pub implementation: alloy::sol_types::private::Address,
3866    }
3867    #[allow(
3868        non_camel_case_types,
3869        non_snake_case,
3870        clippy::pub_underscore_fields,
3871        clippy::style
3872    )]
3873    const _: () = {
3874        use alloy::sol_types as alloy_sol_types;
3875        #[automatically_derived]
3876        impl alloy_sol_types::SolEvent for Upgraded {
3877            type DataTuple<'a> = ();
3878            type DataToken<'a> = <Self::DataTuple<
3879                'a,
3880            > as alloy_sol_types::SolType>::Token<'a>;
3881            type TopicList = (
3882                alloy_sol_types::sol_data::FixedBytes<32>,
3883                alloy::sol_types::sol_data::Address,
3884            );
3885            const SIGNATURE: &'static str = "Upgraded(address)";
3886            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3887                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
3888                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
3889                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
3890            ]);
3891            const ANONYMOUS: bool = false;
3892            #[allow(unused_variables)]
3893            #[inline]
3894            fn new(
3895                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3896                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3897            ) -> Self {
3898                Self { implementation: topics.1 }
3899            }
3900            #[inline]
3901            fn check_signature(
3902                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3903            ) -> alloy_sol_types::Result<()> {
3904                if topics.0 != Self::SIGNATURE_HASH {
3905                    return Err(
3906                        alloy_sol_types::Error::invalid_event_signature_hash(
3907                            Self::SIGNATURE,
3908                            topics.0,
3909                            Self::SIGNATURE_HASH,
3910                        ),
3911                    );
3912                }
3913                Ok(())
3914            }
3915            #[inline]
3916            fn tokenize_body(&self) -> Self::DataToken<'_> {
3917                ()
3918            }
3919            #[inline]
3920            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3921                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
3922            }
3923            #[inline]
3924            fn encode_topics_raw(
3925                &self,
3926                out: &mut [alloy_sol_types::abi::token::WordToken],
3927            ) -> alloy_sol_types::Result<()> {
3928                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3929                    return Err(alloy_sol_types::Error::Overrun);
3930                }
3931                out[0usize] = alloy_sol_types::abi::token::WordToken(
3932                    Self::SIGNATURE_HASH,
3933                );
3934                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3935                    &self.implementation,
3936                );
3937                Ok(())
3938            }
3939        }
3940        #[automatically_derived]
3941        impl alloy_sol_types::private::IntoLogData for Upgraded {
3942            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3943                From::from(self)
3944            }
3945            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3946                From::from(&self)
3947            }
3948        }
3949        #[automatically_derived]
3950        impl From<&Upgraded> for alloy_sol_types::private::LogData {
3951            #[inline]
3952            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
3953                alloy_sol_types::SolEvent::encode_log_data(this)
3954            }
3955        }
3956    };
3957    /**Constructor`.
3958```solidity
3959constructor();
3960```*/
3961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3962    #[derive(Clone)]
3963    pub struct constructorCall {}
3964    const _: () = {
3965        use alloy::sol_types as alloy_sol_types;
3966        {
3967            #[doc(hidden)]
3968            #[allow(dead_code)]
3969            type UnderlyingSolTuple<'a> = ();
3970            #[doc(hidden)]
3971            type UnderlyingRustTuple<'a> = ();
3972            #[cfg(test)]
3973            #[allow(dead_code, unreachable_patterns)]
3974            fn _type_assertion(
3975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3976            ) {
3977                match _t {
3978                    alloy_sol_types::private::AssertTypeEq::<
3979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3980                    >(_) => {}
3981                }
3982            }
3983            #[automatically_derived]
3984            #[doc(hidden)]
3985            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3986                fn from(value: constructorCall) -> Self {
3987                    ()
3988                }
3989            }
3990            #[automatically_derived]
3991            #[doc(hidden)]
3992            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3993                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3994                    Self {}
3995                }
3996            }
3997        }
3998        #[automatically_derived]
3999        impl alloy_sol_types::SolConstructor for constructorCall {
4000            type Parameters<'a> = ();
4001            type Token<'a> = <Self::Parameters<
4002                'a,
4003            > as alloy_sol_types::SolType>::Token<'a>;
4004            #[inline]
4005            fn new<'a>(
4006                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4007            ) -> Self {
4008                tuple.into()
4009            }
4010            #[inline]
4011            fn tokenize(&self) -> Self::Token<'_> {
4012                ()
4013            }
4014        }
4015    };
4016    #[derive(serde::Serialize, serde::Deserialize)]
4017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4018    /**Function with signature `BPS_DENOMINATOR()` and selector `0xe1a45218`.
4019```solidity
4020function BPS_DENOMINATOR() external view returns (uint256);
4021```*/
4022    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4023    #[derive(Clone)]
4024    pub struct BPS_DENOMINATORCall;
4025    #[derive(serde::Serialize, serde::Deserialize)]
4026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4027    ///Container type for the return parameters of the [`BPS_DENOMINATOR()`](BPS_DENOMINATORCall) function.
4028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4029    #[derive(Clone)]
4030    pub struct BPS_DENOMINATORReturn {
4031        #[allow(missing_docs)]
4032        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4033    }
4034    #[allow(
4035        non_camel_case_types,
4036        non_snake_case,
4037        clippy::pub_underscore_fields,
4038        clippy::style
4039    )]
4040    const _: () = {
4041        use alloy::sol_types as alloy_sol_types;
4042        {
4043            #[doc(hidden)]
4044            #[allow(dead_code)]
4045            type UnderlyingSolTuple<'a> = ();
4046            #[doc(hidden)]
4047            type UnderlyingRustTuple<'a> = ();
4048            #[cfg(test)]
4049            #[allow(dead_code, unreachable_patterns)]
4050            fn _type_assertion(
4051                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4052            ) {
4053                match _t {
4054                    alloy_sol_types::private::AssertTypeEq::<
4055                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4056                    >(_) => {}
4057                }
4058            }
4059            #[automatically_derived]
4060            #[doc(hidden)]
4061            impl ::core::convert::From<BPS_DENOMINATORCall> for UnderlyingRustTuple<'_> {
4062                fn from(value: BPS_DENOMINATORCall) -> Self {
4063                    ()
4064                }
4065            }
4066            #[automatically_derived]
4067            #[doc(hidden)]
4068            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BPS_DENOMINATORCall {
4069                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4070                    Self
4071                }
4072            }
4073        }
4074        {
4075            #[doc(hidden)]
4076            #[allow(dead_code)]
4077            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4078            #[doc(hidden)]
4079            type UnderlyingRustTuple<'a> = (
4080                alloy::sol_types::private::primitives::aliases::U256,
4081            );
4082            #[cfg(test)]
4083            #[allow(dead_code, unreachable_patterns)]
4084            fn _type_assertion(
4085                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4086            ) {
4087                match _t {
4088                    alloy_sol_types::private::AssertTypeEq::<
4089                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4090                    >(_) => {}
4091                }
4092            }
4093            #[automatically_derived]
4094            #[doc(hidden)]
4095            impl ::core::convert::From<BPS_DENOMINATORReturn>
4096            for UnderlyingRustTuple<'_> {
4097                fn from(value: BPS_DENOMINATORReturn) -> Self {
4098                    (value._0,)
4099                }
4100            }
4101            #[automatically_derived]
4102            #[doc(hidden)]
4103            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4104            for BPS_DENOMINATORReturn {
4105                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4106                    Self { _0: tuple.0 }
4107                }
4108            }
4109        }
4110        #[automatically_derived]
4111        impl alloy_sol_types::SolCall for BPS_DENOMINATORCall {
4112            type Parameters<'a> = ();
4113            type Token<'a> = <Self::Parameters<
4114                'a,
4115            > as alloy_sol_types::SolType>::Token<'a>;
4116            type Return = alloy::sol_types::private::primitives::aliases::U256;
4117            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4118            type ReturnToken<'a> = <Self::ReturnTuple<
4119                'a,
4120            > as alloy_sol_types::SolType>::Token<'a>;
4121            const SIGNATURE: &'static str = "BPS_DENOMINATOR()";
4122            const SELECTOR: [u8; 4] = [225u8, 164u8, 82u8, 24u8];
4123            #[inline]
4124            fn new<'a>(
4125                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4126            ) -> Self {
4127                tuple.into()
4128            }
4129            #[inline]
4130            fn tokenize(&self) -> Self::Token<'_> {
4131                ()
4132            }
4133            #[inline]
4134            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4135                (
4136                    <alloy::sol_types::sol_data::Uint<
4137                        256,
4138                    > as alloy_sol_types::SolType>::tokenize(ret),
4139                )
4140            }
4141            #[inline]
4142            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4143                <Self::ReturnTuple<
4144                    '_,
4145                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4146                    .map(|r| {
4147                        let r: BPS_DENOMINATORReturn = r.into();
4148                        r._0
4149                    })
4150            }
4151            #[inline]
4152            fn abi_decode_returns_validate(
4153                data: &[u8],
4154            ) -> alloy_sol_types::Result<Self::Return> {
4155                <Self::ReturnTuple<
4156                    '_,
4157                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4158                    .map(|r| {
4159                        let r: BPS_DENOMINATORReturn = r.into();
4160                        r._0
4161                    })
4162            }
4163        }
4164    };
4165    #[derive(serde::Serialize, serde::Deserialize)]
4166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4167    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
4168```solidity
4169function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
4170```*/
4171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4172    #[derive(Clone)]
4173    pub struct DEFAULT_ADMIN_ROLECall;
4174    #[derive(serde::Serialize, serde::Deserialize)]
4175    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4176    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
4177    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4178    #[derive(Clone)]
4179    pub struct DEFAULT_ADMIN_ROLEReturn {
4180        #[allow(missing_docs)]
4181        pub _0: alloy::sol_types::private::FixedBytes<32>,
4182    }
4183    #[allow(
4184        non_camel_case_types,
4185        non_snake_case,
4186        clippy::pub_underscore_fields,
4187        clippy::style
4188    )]
4189    const _: () = {
4190        use alloy::sol_types as alloy_sol_types;
4191        {
4192            #[doc(hidden)]
4193            #[allow(dead_code)]
4194            type UnderlyingSolTuple<'a> = ();
4195            #[doc(hidden)]
4196            type UnderlyingRustTuple<'a> = ();
4197            #[cfg(test)]
4198            #[allow(dead_code, unreachable_patterns)]
4199            fn _type_assertion(
4200                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4201            ) {
4202                match _t {
4203                    alloy_sol_types::private::AssertTypeEq::<
4204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4205                    >(_) => {}
4206                }
4207            }
4208            #[automatically_derived]
4209            #[doc(hidden)]
4210            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
4211            for UnderlyingRustTuple<'_> {
4212                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
4213                    ()
4214                }
4215            }
4216            #[automatically_derived]
4217            #[doc(hidden)]
4218            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4219            for DEFAULT_ADMIN_ROLECall {
4220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4221                    Self
4222                }
4223            }
4224        }
4225        {
4226            #[doc(hidden)]
4227            #[allow(dead_code)]
4228            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4229            #[doc(hidden)]
4230            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4231            #[cfg(test)]
4232            #[allow(dead_code, unreachable_patterns)]
4233            fn _type_assertion(
4234                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4235            ) {
4236                match _t {
4237                    alloy_sol_types::private::AssertTypeEq::<
4238                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4239                    >(_) => {}
4240                }
4241            }
4242            #[automatically_derived]
4243            #[doc(hidden)]
4244            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
4245            for UnderlyingRustTuple<'_> {
4246                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
4247                    (value._0,)
4248                }
4249            }
4250            #[automatically_derived]
4251            #[doc(hidden)]
4252            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4253            for DEFAULT_ADMIN_ROLEReturn {
4254                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4255                    Self { _0: tuple.0 }
4256                }
4257            }
4258        }
4259        #[automatically_derived]
4260        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
4261            type Parameters<'a> = ();
4262            type Token<'a> = <Self::Parameters<
4263                'a,
4264            > as alloy_sol_types::SolType>::Token<'a>;
4265            type Return = alloy::sol_types::private::FixedBytes<32>;
4266            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4267            type ReturnToken<'a> = <Self::ReturnTuple<
4268                'a,
4269            > as alloy_sol_types::SolType>::Token<'a>;
4270            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
4271            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
4272            #[inline]
4273            fn new<'a>(
4274                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4275            ) -> Self {
4276                tuple.into()
4277            }
4278            #[inline]
4279            fn tokenize(&self) -> Self::Token<'_> {
4280                ()
4281            }
4282            #[inline]
4283            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4284                (
4285                    <alloy::sol_types::sol_data::FixedBytes<
4286                        32,
4287                    > as alloy_sol_types::SolType>::tokenize(ret),
4288                )
4289            }
4290            #[inline]
4291            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4292                <Self::ReturnTuple<
4293                    '_,
4294                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4295                    .map(|r| {
4296                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
4297                        r._0
4298                    })
4299            }
4300            #[inline]
4301            fn abi_decode_returns_validate(
4302                data: &[u8],
4303            ) -> alloy_sol_types::Result<Self::Return> {
4304                <Self::ReturnTuple<
4305                    '_,
4306                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4307                    .map(|r| {
4308                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
4309                        r._0
4310                    })
4311            }
4312        }
4313    };
4314    #[derive(serde::Serialize, serde::Deserialize)]
4315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4316    /**Function with signature `MAX_DAILY_LIMIT_BASIS_POINTS()` and selector `0xcf21395b`.
4317```solidity
4318function MAX_DAILY_LIMIT_BASIS_POINTS() external view returns (uint256);
4319```*/
4320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4321    #[derive(Clone)]
4322    pub struct MAX_DAILY_LIMIT_BASIS_POINTSCall;
4323    #[derive(serde::Serialize, serde::Deserialize)]
4324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4325    ///Container type for the return parameters of the [`MAX_DAILY_LIMIT_BASIS_POINTS()`](MAX_DAILY_LIMIT_BASIS_POINTSCall) function.
4326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4327    #[derive(Clone)]
4328    pub struct MAX_DAILY_LIMIT_BASIS_POINTSReturn {
4329        #[allow(missing_docs)]
4330        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4331    }
4332    #[allow(
4333        non_camel_case_types,
4334        non_snake_case,
4335        clippy::pub_underscore_fields,
4336        clippy::style
4337    )]
4338    const _: () = {
4339        use alloy::sol_types as alloy_sol_types;
4340        {
4341            #[doc(hidden)]
4342            #[allow(dead_code)]
4343            type UnderlyingSolTuple<'a> = ();
4344            #[doc(hidden)]
4345            type UnderlyingRustTuple<'a> = ();
4346            #[cfg(test)]
4347            #[allow(dead_code, unreachable_patterns)]
4348            fn _type_assertion(
4349                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4350            ) {
4351                match _t {
4352                    alloy_sol_types::private::AssertTypeEq::<
4353                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4354                    >(_) => {}
4355                }
4356            }
4357            #[automatically_derived]
4358            #[doc(hidden)]
4359            impl ::core::convert::From<MAX_DAILY_LIMIT_BASIS_POINTSCall>
4360            for UnderlyingRustTuple<'_> {
4361                fn from(value: MAX_DAILY_LIMIT_BASIS_POINTSCall) -> Self {
4362                    ()
4363                }
4364            }
4365            #[automatically_derived]
4366            #[doc(hidden)]
4367            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4368            for MAX_DAILY_LIMIT_BASIS_POINTSCall {
4369                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4370                    Self
4371                }
4372            }
4373        }
4374        {
4375            #[doc(hidden)]
4376            #[allow(dead_code)]
4377            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4378            #[doc(hidden)]
4379            type UnderlyingRustTuple<'a> = (
4380                alloy::sol_types::private::primitives::aliases::U256,
4381            );
4382            #[cfg(test)]
4383            #[allow(dead_code, unreachable_patterns)]
4384            fn _type_assertion(
4385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4386            ) {
4387                match _t {
4388                    alloy_sol_types::private::AssertTypeEq::<
4389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4390                    >(_) => {}
4391                }
4392            }
4393            #[automatically_derived]
4394            #[doc(hidden)]
4395            impl ::core::convert::From<MAX_DAILY_LIMIT_BASIS_POINTSReturn>
4396            for UnderlyingRustTuple<'_> {
4397                fn from(value: MAX_DAILY_LIMIT_BASIS_POINTSReturn) -> Self {
4398                    (value._0,)
4399                }
4400            }
4401            #[automatically_derived]
4402            #[doc(hidden)]
4403            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4404            for MAX_DAILY_LIMIT_BASIS_POINTSReturn {
4405                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4406                    Self { _0: tuple.0 }
4407                }
4408            }
4409        }
4410        #[automatically_derived]
4411        impl alloy_sol_types::SolCall for MAX_DAILY_LIMIT_BASIS_POINTSCall {
4412            type Parameters<'a> = ();
4413            type Token<'a> = <Self::Parameters<
4414                'a,
4415            > as alloy_sol_types::SolType>::Token<'a>;
4416            type Return = alloy::sol_types::private::primitives::aliases::U256;
4417            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4418            type ReturnToken<'a> = <Self::ReturnTuple<
4419                'a,
4420            > as alloy_sol_types::SolType>::Token<'a>;
4421            const SIGNATURE: &'static str = "MAX_DAILY_LIMIT_BASIS_POINTS()";
4422            const SELECTOR: [u8; 4] = [207u8, 33u8, 57u8, 91u8];
4423            #[inline]
4424            fn new<'a>(
4425                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4426            ) -> Self {
4427                tuple.into()
4428            }
4429            #[inline]
4430            fn tokenize(&self) -> Self::Token<'_> {
4431                ()
4432            }
4433            #[inline]
4434            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4435                (
4436                    <alloy::sol_types::sol_data::Uint<
4437                        256,
4438                    > as alloy_sol_types::SolType>::tokenize(ret),
4439                )
4440            }
4441            #[inline]
4442            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4443                <Self::ReturnTuple<
4444                    '_,
4445                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4446                    .map(|r| {
4447                        let r: MAX_DAILY_LIMIT_BASIS_POINTSReturn = r.into();
4448                        r._0
4449                    })
4450            }
4451            #[inline]
4452            fn abi_decode_returns_validate(
4453                data: &[u8],
4454            ) -> alloy_sol_types::Result<Self::Return> {
4455                <Self::ReturnTuple<
4456                    '_,
4457                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4458                    .map(|r| {
4459                        let r: MAX_DAILY_LIMIT_BASIS_POINTSReturn = r.into();
4460                        r._0
4461                    })
4462            }
4463        }
4464    };
4465    #[derive(serde::Serialize, serde::Deserialize)]
4466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4467    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
4468```solidity
4469function PAUSER_ROLE() external view returns (bytes32);
4470```*/
4471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4472    #[derive(Clone)]
4473    pub struct PAUSER_ROLECall;
4474    #[derive(serde::Serialize, serde::Deserialize)]
4475    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4476    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
4477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4478    #[derive(Clone)]
4479    pub struct PAUSER_ROLEReturn {
4480        #[allow(missing_docs)]
4481        pub _0: alloy::sol_types::private::FixedBytes<32>,
4482    }
4483    #[allow(
4484        non_camel_case_types,
4485        non_snake_case,
4486        clippy::pub_underscore_fields,
4487        clippy::style
4488    )]
4489    const _: () = {
4490        use alloy::sol_types as alloy_sol_types;
4491        {
4492            #[doc(hidden)]
4493            #[allow(dead_code)]
4494            type UnderlyingSolTuple<'a> = ();
4495            #[doc(hidden)]
4496            type UnderlyingRustTuple<'a> = ();
4497            #[cfg(test)]
4498            #[allow(dead_code, unreachable_patterns)]
4499            fn _type_assertion(
4500                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4501            ) {
4502                match _t {
4503                    alloy_sol_types::private::AssertTypeEq::<
4504                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4505                    >(_) => {}
4506                }
4507            }
4508            #[automatically_derived]
4509            #[doc(hidden)]
4510            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
4511                fn from(value: PAUSER_ROLECall) -> Self {
4512                    ()
4513                }
4514            }
4515            #[automatically_derived]
4516            #[doc(hidden)]
4517            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
4518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4519                    Self
4520                }
4521            }
4522        }
4523        {
4524            #[doc(hidden)]
4525            #[allow(dead_code)]
4526            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4527            #[doc(hidden)]
4528            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4529            #[cfg(test)]
4530            #[allow(dead_code, unreachable_patterns)]
4531            fn _type_assertion(
4532                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4533            ) {
4534                match _t {
4535                    alloy_sol_types::private::AssertTypeEq::<
4536                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4537                    >(_) => {}
4538                }
4539            }
4540            #[automatically_derived]
4541            #[doc(hidden)]
4542            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
4543                fn from(value: PAUSER_ROLEReturn) -> Self {
4544                    (value._0,)
4545                }
4546            }
4547            #[automatically_derived]
4548            #[doc(hidden)]
4549            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
4550                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4551                    Self { _0: tuple.0 }
4552                }
4553            }
4554        }
4555        #[automatically_derived]
4556        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
4557            type Parameters<'a> = ();
4558            type Token<'a> = <Self::Parameters<
4559                'a,
4560            > as alloy_sol_types::SolType>::Token<'a>;
4561            type Return = alloy::sol_types::private::FixedBytes<32>;
4562            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4563            type ReturnToken<'a> = <Self::ReturnTuple<
4564                'a,
4565            > as alloy_sol_types::SolType>::Token<'a>;
4566            const SIGNATURE: &'static str = "PAUSER_ROLE()";
4567            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
4568            #[inline]
4569            fn new<'a>(
4570                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4571            ) -> Self {
4572                tuple.into()
4573            }
4574            #[inline]
4575            fn tokenize(&self) -> Self::Token<'_> {
4576                ()
4577            }
4578            #[inline]
4579            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4580                (
4581                    <alloy::sol_types::sol_data::FixedBytes<
4582                        32,
4583                    > as alloy_sol_types::SolType>::tokenize(ret),
4584                )
4585            }
4586            #[inline]
4587            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4588                <Self::ReturnTuple<
4589                    '_,
4590                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4591                    .map(|r| {
4592                        let r: PAUSER_ROLEReturn = r.into();
4593                        r._0
4594                    })
4595            }
4596            #[inline]
4597            fn abi_decode_returns_validate(
4598                data: &[u8],
4599            ) -> alloy_sol_types::Result<Self::Return> {
4600                <Self::ReturnTuple<
4601                    '_,
4602                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4603                    .map(|r| {
4604                        let r: PAUSER_ROLEReturn = r.into();
4605                        r._0
4606                    })
4607            }
4608        }
4609    };
4610    #[derive(serde::Serialize, serde::Deserialize)]
4611    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4612    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
4613```solidity
4614function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
4615```*/
4616    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4617    #[derive(Clone)]
4618    pub struct UPGRADE_INTERFACE_VERSIONCall;
4619    #[derive(serde::Serialize, serde::Deserialize)]
4620    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4621    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
4622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4623    #[derive(Clone)]
4624    pub struct UPGRADE_INTERFACE_VERSIONReturn {
4625        #[allow(missing_docs)]
4626        pub _0: alloy::sol_types::private::String,
4627    }
4628    #[allow(
4629        non_camel_case_types,
4630        non_snake_case,
4631        clippy::pub_underscore_fields,
4632        clippy::style
4633    )]
4634    const _: () = {
4635        use alloy::sol_types as alloy_sol_types;
4636        {
4637            #[doc(hidden)]
4638            #[allow(dead_code)]
4639            type UnderlyingSolTuple<'a> = ();
4640            #[doc(hidden)]
4641            type UnderlyingRustTuple<'a> = ();
4642            #[cfg(test)]
4643            #[allow(dead_code, unreachable_patterns)]
4644            fn _type_assertion(
4645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4646            ) {
4647                match _t {
4648                    alloy_sol_types::private::AssertTypeEq::<
4649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4650                    >(_) => {}
4651                }
4652            }
4653            #[automatically_derived]
4654            #[doc(hidden)]
4655            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
4656            for UnderlyingRustTuple<'_> {
4657                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
4658                    ()
4659                }
4660            }
4661            #[automatically_derived]
4662            #[doc(hidden)]
4663            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4664            for UPGRADE_INTERFACE_VERSIONCall {
4665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4666                    Self
4667                }
4668            }
4669        }
4670        {
4671            #[doc(hidden)]
4672            #[allow(dead_code)]
4673            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
4674            #[doc(hidden)]
4675            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
4676            #[cfg(test)]
4677            #[allow(dead_code, unreachable_patterns)]
4678            fn _type_assertion(
4679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4680            ) {
4681                match _t {
4682                    alloy_sol_types::private::AssertTypeEq::<
4683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4684                    >(_) => {}
4685                }
4686            }
4687            #[automatically_derived]
4688            #[doc(hidden)]
4689            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
4690            for UnderlyingRustTuple<'_> {
4691                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
4692                    (value._0,)
4693                }
4694            }
4695            #[automatically_derived]
4696            #[doc(hidden)]
4697            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4698            for UPGRADE_INTERFACE_VERSIONReturn {
4699                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4700                    Self { _0: tuple.0 }
4701                }
4702            }
4703        }
4704        #[automatically_derived]
4705        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
4706            type Parameters<'a> = ();
4707            type Token<'a> = <Self::Parameters<
4708                'a,
4709            > as alloy_sol_types::SolType>::Token<'a>;
4710            type Return = alloy::sol_types::private::String;
4711            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
4712            type ReturnToken<'a> = <Self::ReturnTuple<
4713                'a,
4714            > as alloy_sol_types::SolType>::Token<'a>;
4715            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
4716            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
4717            #[inline]
4718            fn new<'a>(
4719                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4720            ) -> Self {
4721                tuple.into()
4722            }
4723            #[inline]
4724            fn tokenize(&self) -> Self::Token<'_> {
4725                ()
4726            }
4727            #[inline]
4728            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4729                (
4730                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
4731                        ret,
4732                    ),
4733                )
4734            }
4735            #[inline]
4736            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4737                <Self::ReturnTuple<
4738                    '_,
4739                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4740                    .map(|r| {
4741                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
4742                        r._0
4743                    })
4744            }
4745            #[inline]
4746            fn abi_decode_returns_validate(
4747                data: &[u8],
4748            ) -> alloy_sol_types::Result<Self::Return> {
4749                <Self::ReturnTuple<
4750                    '_,
4751                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4752                    .map(|r| {
4753                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
4754                        r._0
4755                    })
4756            }
4757        }
4758    };
4759    #[derive(serde::Serialize, serde::Deserialize)]
4760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4761    /**Function with signature `claimRewards(uint256,bytes)` and selector `0x549dd8c3`.
4762```solidity
4763function claimRewards(uint256 lifetimeRewards, bytes memory authData) external;
4764```*/
4765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4766    #[derive(Clone)]
4767    pub struct claimRewardsCall {
4768        #[allow(missing_docs)]
4769        pub lifetimeRewards: alloy::sol_types::private::primitives::aliases::U256,
4770        #[allow(missing_docs)]
4771        pub authData: alloy::sol_types::private::Bytes,
4772    }
4773    ///Container type for the return parameters of the [`claimRewards(uint256,bytes)`](claimRewardsCall) function.
4774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4775    #[derive(Clone)]
4776    pub struct claimRewardsReturn {}
4777    #[allow(
4778        non_camel_case_types,
4779        non_snake_case,
4780        clippy::pub_underscore_fields,
4781        clippy::style
4782    )]
4783    const _: () = {
4784        use alloy::sol_types as alloy_sol_types;
4785        {
4786            #[doc(hidden)]
4787            #[allow(dead_code)]
4788            type UnderlyingSolTuple<'a> = (
4789                alloy::sol_types::sol_data::Uint<256>,
4790                alloy::sol_types::sol_data::Bytes,
4791            );
4792            #[doc(hidden)]
4793            type UnderlyingRustTuple<'a> = (
4794                alloy::sol_types::private::primitives::aliases::U256,
4795                alloy::sol_types::private::Bytes,
4796            );
4797            #[cfg(test)]
4798            #[allow(dead_code, unreachable_patterns)]
4799            fn _type_assertion(
4800                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4801            ) {
4802                match _t {
4803                    alloy_sol_types::private::AssertTypeEq::<
4804                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4805                    >(_) => {}
4806                }
4807            }
4808            #[automatically_derived]
4809            #[doc(hidden)]
4810            impl ::core::convert::From<claimRewardsCall> for UnderlyingRustTuple<'_> {
4811                fn from(value: claimRewardsCall) -> Self {
4812                    (value.lifetimeRewards, value.authData)
4813                }
4814            }
4815            #[automatically_derived]
4816            #[doc(hidden)]
4817            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimRewardsCall {
4818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4819                    Self {
4820                        lifetimeRewards: tuple.0,
4821                        authData: tuple.1,
4822                    }
4823                }
4824            }
4825        }
4826        {
4827            #[doc(hidden)]
4828            #[allow(dead_code)]
4829            type UnderlyingSolTuple<'a> = ();
4830            #[doc(hidden)]
4831            type UnderlyingRustTuple<'a> = ();
4832            #[cfg(test)]
4833            #[allow(dead_code, unreachable_patterns)]
4834            fn _type_assertion(
4835                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4836            ) {
4837                match _t {
4838                    alloy_sol_types::private::AssertTypeEq::<
4839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4840                    >(_) => {}
4841                }
4842            }
4843            #[automatically_derived]
4844            #[doc(hidden)]
4845            impl ::core::convert::From<claimRewardsReturn> for UnderlyingRustTuple<'_> {
4846                fn from(value: claimRewardsReturn) -> Self {
4847                    ()
4848                }
4849            }
4850            #[automatically_derived]
4851            #[doc(hidden)]
4852            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimRewardsReturn {
4853                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4854                    Self {}
4855                }
4856            }
4857        }
4858        impl claimRewardsReturn {
4859            fn _tokenize(
4860                &self,
4861            ) -> <claimRewardsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4862                ()
4863            }
4864        }
4865        #[automatically_derived]
4866        impl alloy_sol_types::SolCall for claimRewardsCall {
4867            type Parameters<'a> = (
4868                alloy::sol_types::sol_data::Uint<256>,
4869                alloy::sol_types::sol_data::Bytes,
4870            );
4871            type Token<'a> = <Self::Parameters<
4872                'a,
4873            > as alloy_sol_types::SolType>::Token<'a>;
4874            type Return = claimRewardsReturn;
4875            type ReturnTuple<'a> = ();
4876            type ReturnToken<'a> = <Self::ReturnTuple<
4877                'a,
4878            > as alloy_sol_types::SolType>::Token<'a>;
4879            const SIGNATURE: &'static str = "claimRewards(uint256,bytes)";
4880            const SELECTOR: [u8; 4] = [84u8, 157u8, 216u8, 195u8];
4881            #[inline]
4882            fn new<'a>(
4883                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4884            ) -> Self {
4885                tuple.into()
4886            }
4887            #[inline]
4888            fn tokenize(&self) -> Self::Token<'_> {
4889                (
4890                    <alloy::sol_types::sol_data::Uint<
4891                        256,
4892                    > as alloy_sol_types::SolType>::tokenize(&self.lifetimeRewards),
4893                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4894                        &self.authData,
4895                    ),
4896                )
4897            }
4898            #[inline]
4899            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4900                claimRewardsReturn::_tokenize(ret)
4901            }
4902            #[inline]
4903            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4904                <Self::ReturnTuple<
4905                    '_,
4906                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4907                    .map(Into::into)
4908            }
4909            #[inline]
4910            fn abi_decode_returns_validate(
4911                data: &[u8],
4912            ) -> alloy_sol_types::Result<Self::Return> {
4913                <Self::ReturnTuple<
4914                    '_,
4915                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4916                    .map(Into::into)
4917            }
4918        }
4919    };
4920    #[derive(serde::Serialize, serde::Deserialize)]
4921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4922    /**Function with signature `claimedRewards(address)` and selector `0xbd834345`.
4923```solidity
4924function claimedRewards(address claimer) external view returns (uint256 claimed);
4925```*/
4926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4927    #[derive(Clone)]
4928    pub struct claimedRewardsCall {
4929        #[allow(missing_docs)]
4930        pub claimer: alloy::sol_types::private::Address,
4931    }
4932    #[derive(serde::Serialize, serde::Deserialize)]
4933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4934    ///Container type for the return parameters of the [`claimedRewards(address)`](claimedRewardsCall) function.
4935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4936    #[derive(Clone)]
4937    pub struct claimedRewardsReturn {
4938        #[allow(missing_docs)]
4939        pub claimed: alloy::sol_types::private::primitives::aliases::U256,
4940    }
4941    #[allow(
4942        non_camel_case_types,
4943        non_snake_case,
4944        clippy::pub_underscore_fields,
4945        clippy::style
4946    )]
4947    const _: () = {
4948        use alloy::sol_types as alloy_sol_types;
4949        {
4950            #[doc(hidden)]
4951            #[allow(dead_code)]
4952            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4953            #[doc(hidden)]
4954            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4955            #[cfg(test)]
4956            #[allow(dead_code, unreachable_patterns)]
4957            fn _type_assertion(
4958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4959            ) {
4960                match _t {
4961                    alloy_sol_types::private::AssertTypeEq::<
4962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4963                    >(_) => {}
4964                }
4965            }
4966            #[automatically_derived]
4967            #[doc(hidden)]
4968            impl ::core::convert::From<claimedRewardsCall> for UnderlyingRustTuple<'_> {
4969                fn from(value: claimedRewardsCall) -> Self {
4970                    (value.claimer,)
4971                }
4972            }
4973            #[automatically_derived]
4974            #[doc(hidden)]
4975            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimedRewardsCall {
4976                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4977                    Self { claimer: tuple.0 }
4978                }
4979            }
4980        }
4981        {
4982            #[doc(hidden)]
4983            #[allow(dead_code)]
4984            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4985            #[doc(hidden)]
4986            type UnderlyingRustTuple<'a> = (
4987                alloy::sol_types::private::primitives::aliases::U256,
4988            );
4989            #[cfg(test)]
4990            #[allow(dead_code, unreachable_patterns)]
4991            fn _type_assertion(
4992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4993            ) {
4994                match _t {
4995                    alloy_sol_types::private::AssertTypeEq::<
4996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4997                    >(_) => {}
4998                }
4999            }
5000            #[automatically_derived]
5001            #[doc(hidden)]
5002            impl ::core::convert::From<claimedRewardsReturn>
5003            for UnderlyingRustTuple<'_> {
5004                fn from(value: claimedRewardsReturn) -> Self {
5005                    (value.claimed,)
5006                }
5007            }
5008            #[automatically_derived]
5009            #[doc(hidden)]
5010            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5011            for claimedRewardsReturn {
5012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5013                    Self { claimed: tuple.0 }
5014                }
5015            }
5016        }
5017        #[automatically_derived]
5018        impl alloy_sol_types::SolCall for claimedRewardsCall {
5019            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5020            type Token<'a> = <Self::Parameters<
5021                'a,
5022            > as alloy_sol_types::SolType>::Token<'a>;
5023            type Return = alloy::sol_types::private::primitives::aliases::U256;
5024            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5025            type ReturnToken<'a> = <Self::ReturnTuple<
5026                'a,
5027            > as alloy_sol_types::SolType>::Token<'a>;
5028            const SIGNATURE: &'static str = "claimedRewards(address)";
5029            const SELECTOR: [u8; 4] = [189u8, 131u8, 67u8, 69u8];
5030            #[inline]
5031            fn new<'a>(
5032                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5033            ) -> Self {
5034                tuple.into()
5035            }
5036            #[inline]
5037            fn tokenize(&self) -> Self::Token<'_> {
5038                (
5039                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5040                        &self.claimer,
5041                    ),
5042                )
5043            }
5044            #[inline]
5045            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5046                (
5047                    <alloy::sol_types::sol_data::Uint<
5048                        256,
5049                    > as alloy_sol_types::SolType>::tokenize(ret),
5050                )
5051            }
5052            #[inline]
5053            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5054                <Self::ReturnTuple<
5055                    '_,
5056                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5057                    .map(|r| {
5058                        let r: claimedRewardsReturn = r.into();
5059                        r.claimed
5060                    })
5061            }
5062            #[inline]
5063            fn abi_decode_returns_validate(
5064                data: &[u8],
5065            ) -> alloy_sol_types::Result<Self::Return> {
5066                <Self::ReturnTuple<
5067                    '_,
5068                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5069                    .map(|r| {
5070                        let r: claimedRewardsReturn = r.into();
5071                        r.claimed
5072                    })
5073            }
5074        }
5075    };
5076    #[derive(serde::Serialize, serde::Deserialize)]
5077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5078    /**Function with signature `currentAdmin()` and selector `0xba4bcd72`.
5079```solidity
5080function currentAdmin() external view returns (address);
5081```*/
5082    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5083    #[derive(Clone)]
5084    pub struct currentAdminCall;
5085    #[derive(serde::Serialize, serde::Deserialize)]
5086    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5087    ///Container type for the return parameters of the [`currentAdmin()`](currentAdminCall) function.
5088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5089    #[derive(Clone)]
5090    pub struct currentAdminReturn {
5091        #[allow(missing_docs)]
5092        pub _0: alloy::sol_types::private::Address,
5093    }
5094    #[allow(
5095        non_camel_case_types,
5096        non_snake_case,
5097        clippy::pub_underscore_fields,
5098        clippy::style
5099    )]
5100    const _: () = {
5101        use alloy::sol_types as alloy_sol_types;
5102        {
5103            #[doc(hidden)]
5104            #[allow(dead_code)]
5105            type UnderlyingSolTuple<'a> = ();
5106            #[doc(hidden)]
5107            type UnderlyingRustTuple<'a> = ();
5108            #[cfg(test)]
5109            #[allow(dead_code, unreachable_patterns)]
5110            fn _type_assertion(
5111                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5112            ) {
5113                match _t {
5114                    alloy_sol_types::private::AssertTypeEq::<
5115                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5116                    >(_) => {}
5117                }
5118            }
5119            #[automatically_derived]
5120            #[doc(hidden)]
5121            impl ::core::convert::From<currentAdminCall> for UnderlyingRustTuple<'_> {
5122                fn from(value: currentAdminCall) -> Self {
5123                    ()
5124                }
5125            }
5126            #[automatically_derived]
5127            #[doc(hidden)]
5128            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentAdminCall {
5129                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5130                    Self
5131                }
5132            }
5133        }
5134        {
5135            #[doc(hidden)]
5136            #[allow(dead_code)]
5137            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5138            #[doc(hidden)]
5139            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5140            #[cfg(test)]
5141            #[allow(dead_code, unreachable_patterns)]
5142            fn _type_assertion(
5143                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5144            ) {
5145                match _t {
5146                    alloy_sol_types::private::AssertTypeEq::<
5147                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5148                    >(_) => {}
5149                }
5150            }
5151            #[automatically_derived]
5152            #[doc(hidden)]
5153            impl ::core::convert::From<currentAdminReturn> for UnderlyingRustTuple<'_> {
5154                fn from(value: currentAdminReturn) -> Self {
5155                    (value._0,)
5156                }
5157            }
5158            #[automatically_derived]
5159            #[doc(hidden)]
5160            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentAdminReturn {
5161                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5162                    Self { _0: tuple.0 }
5163                }
5164            }
5165        }
5166        #[automatically_derived]
5167        impl alloy_sol_types::SolCall for currentAdminCall {
5168            type Parameters<'a> = ();
5169            type Token<'a> = <Self::Parameters<
5170                'a,
5171            > as alloy_sol_types::SolType>::Token<'a>;
5172            type Return = alloy::sol_types::private::Address;
5173            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
5174            type ReturnToken<'a> = <Self::ReturnTuple<
5175                'a,
5176            > as alloy_sol_types::SolType>::Token<'a>;
5177            const SIGNATURE: &'static str = "currentAdmin()";
5178            const SELECTOR: [u8; 4] = [186u8, 75u8, 205u8, 114u8];
5179            #[inline]
5180            fn new<'a>(
5181                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5182            ) -> Self {
5183                tuple.into()
5184            }
5185            #[inline]
5186            fn tokenize(&self) -> Self::Token<'_> {
5187                ()
5188            }
5189            #[inline]
5190            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5191                (
5192                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5193                        ret,
5194                    ),
5195                )
5196            }
5197            #[inline]
5198            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5199                <Self::ReturnTuple<
5200                    '_,
5201                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5202                    .map(|r| {
5203                        let r: currentAdminReturn = r.into();
5204                        r._0
5205                    })
5206            }
5207            #[inline]
5208            fn abi_decode_returns_validate(
5209                data: &[u8],
5210            ) -> alloy_sol_types::Result<Self::Return> {
5211                <Self::ReturnTuple<
5212                    '_,
5213                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5214                    .map(|r| {
5215                        let r: currentAdminReturn = r.into();
5216                        r._0
5217                    })
5218            }
5219        }
5220    };
5221    #[derive(serde::Serialize, serde::Deserialize)]
5222    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5223    /**Function with signature `dailyLimitWei()` and selector `0x2cca74d8`.
5224```solidity
5225function dailyLimitWei() external view returns (uint256);
5226```*/
5227    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5228    #[derive(Clone)]
5229    pub struct dailyLimitWeiCall;
5230    #[derive(serde::Serialize, serde::Deserialize)]
5231    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5232    ///Container type for the return parameters of the [`dailyLimitWei()`](dailyLimitWeiCall) function.
5233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5234    #[derive(Clone)]
5235    pub struct dailyLimitWeiReturn {
5236        #[allow(missing_docs)]
5237        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5238    }
5239    #[allow(
5240        non_camel_case_types,
5241        non_snake_case,
5242        clippy::pub_underscore_fields,
5243        clippy::style
5244    )]
5245    const _: () = {
5246        use alloy::sol_types as alloy_sol_types;
5247        {
5248            #[doc(hidden)]
5249            #[allow(dead_code)]
5250            type UnderlyingSolTuple<'a> = ();
5251            #[doc(hidden)]
5252            type UnderlyingRustTuple<'a> = ();
5253            #[cfg(test)]
5254            #[allow(dead_code, unreachable_patterns)]
5255            fn _type_assertion(
5256                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5257            ) {
5258                match _t {
5259                    alloy_sol_types::private::AssertTypeEq::<
5260                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5261                    >(_) => {}
5262                }
5263            }
5264            #[automatically_derived]
5265            #[doc(hidden)]
5266            impl ::core::convert::From<dailyLimitWeiCall> for UnderlyingRustTuple<'_> {
5267                fn from(value: dailyLimitWeiCall) -> Self {
5268                    ()
5269                }
5270            }
5271            #[automatically_derived]
5272            #[doc(hidden)]
5273            impl ::core::convert::From<UnderlyingRustTuple<'_>> for dailyLimitWeiCall {
5274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5275                    Self
5276                }
5277            }
5278        }
5279        {
5280            #[doc(hidden)]
5281            #[allow(dead_code)]
5282            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5283            #[doc(hidden)]
5284            type UnderlyingRustTuple<'a> = (
5285                alloy::sol_types::private::primitives::aliases::U256,
5286            );
5287            #[cfg(test)]
5288            #[allow(dead_code, unreachable_patterns)]
5289            fn _type_assertion(
5290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5291            ) {
5292                match _t {
5293                    alloy_sol_types::private::AssertTypeEq::<
5294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5295                    >(_) => {}
5296                }
5297            }
5298            #[automatically_derived]
5299            #[doc(hidden)]
5300            impl ::core::convert::From<dailyLimitWeiReturn> for UnderlyingRustTuple<'_> {
5301                fn from(value: dailyLimitWeiReturn) -> Self {
5302                    (value._0,)
5303                }
5304            }
5305            #[automatically_derived]
5306            #[doc(hidden)]
5307            impl ::core::convert::From<UnderlyingRustTuple<'_>> for dailyLimitWeiReturn {
5308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5309                    Self { _0: tuple.0 }
5310                }
5311            }
5312        }
5313        #[automatically_derived]
5314        impl alloy_sol_types::SolCall for dailyLimitWeiCall {
5315            type Parameters<'a> = ();
5316            type Token<'a> = <Self::Parameters<
5317                'a,
5318            > as alloy_sol_types::SolType>::Token<'a>;
5319            type Return = alloy::sol_types::private::primitives::aliases::U256;
5320            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5321            type ReturnToken<'a> = <Self::ReturnTuple<
5322                'a,
5323            > as alloy_sol_types::SolType>::Token<'a>;
5324            const SIGNATURE: &'static str = "dailyLimitWei()";
5325            const SELECTOR: [u8; 4] = [44u8, 202u8, 116u8, 216u8];
5326            #[inline]
5327            fn new<'a>(
5328                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5329            ) -> Self {
5330                tuple.into()
5331            }
5332            #[inline]
5333            fn tokenize(&self) -> Self::Token<'_> {
5334                ()
5335            }
5336            #[inline]
5337            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5338                (
5339                    <alloy::sol_types::sol_data::Uint<
5340                        256,
5341                    > as alloy_sol_types::SolType>::tokenize(ret),
5342                )
5343            }
5344            #[inline]
5345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5346                <Self::ReturnTuple<
5347                    '_,
5348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5349                    .map(|r| {
5350                        let r: dailyLimitWeiReturn = r.into();
5351                        r._0
5352                    })
5353            }
5354            #[inline]
5355            fn abi_decode_returns_validate(
5356                data: &[u8],
5357            ) -> alloy_sol_types::Result<Self::Return> {
5358                <Self::ReturnTuple<
5359                    '_,
5360                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5361                    .map(|r| {
5362                        let r: dailyLimitWeiReturn = r.into();
5363                        r._0
5364                    })
5365            }
5366        }
5367    };
5368    #[derive(serde::Serialize, serde::Deserialize)]
5369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5370    /**Function with signature `espToken()` and selector `0xf092e13a`.
5371```solidity
5372function espToken() external view returns (address);
5373```*/
5374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5375    #[derive(Clone)]
5376    pub struct espTokenCall;
5377    #[derive(serde::Serialize, serde::Deserialize)]
5378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5379    ///Container type for the return parameters of the [`espToken()`](espTokenCall) function.
5380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5381    #[derive(Clone)]
5382    pub struct espTokenReturn {
5383        #[allow(missing_docs)]
5384        pub _0: alloy::sol_types::private::Address,
5385    }
5386    #[allow(
5387        non_camel_case_types,
5388        non_snake_case,
5389        clippy::pub_underscore_fields,
5390        clippy::style
5391    )]
5392    const _: () = {
5393        use alloy::sol_types as alloy_sol_types;
5394        {
5395            #[doc(hidden)]
5396            #[allow(dead_code)]
5397            type UnderlyingSolTuple<'a> = ();
5398            #[doc(hidden)]
5399            type UnderlyingRustTuple<'a> = ();
5400            #[cfg(test)]
5401            #[allow(dead_code, unreachable_patterns)]
5402            fn _type_assertion(
5403                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5404            ) {
5405                match _t {
5406                    alloy_sol_types::private::AssertTypeEq::<
5407                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5408                    >(_) => {}
5409                }
5410            }
5411            #[automatically_derived]
5412            #[doc(hidden)]
5413            impl ::core::convert::From<espTokenCall> for UnderlyingRustTuple<'_> {
5414                fn from(value: espTokenCall) -> Self {
5415                    ()
5416                }
5417            }
5418            #[automatically_derived]
5419            #[doc(hidden)]
5420            impl ::core::convert::From<UnderlyingRustTuple<'_>> for espTokenCall {
5421                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5422                    Self
5423                }
5424            }
5425        }
5426        {
5427            #[doc(hidden)]
5428            #[allow(dead_code)]
5429            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5430            #[doc(hidden)]
5431            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5432            #[cfg(test)]
5433            #[allow(dead_code, unreachable_patterns)]
5434            fn _type_assertion(
5435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5436            ) {
5437                match _t {
5438                    alloy_sol_types::private::AssertTypeEq::<
5439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5440                    >(_) => {}
5441                }
5442            }
5443            #[automatically_derived]
5444            #[doc(hidden)]
5445            impl ::core::convert::From<espTokenReturn> for UnderlyingRustTuple<'_> {
5446                fn from(value: espTokenReturn) -> Self {
5447                    (value._0,)
5448                }
5449            }
5450            #[automatically_derived]
5451            #[doc(hidden)]
5452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for espTokenReturn {
5453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5454                    Self { _0: tuple.0 }
5455                }
5456            }
5457        }
5458        #[automatically_derived]
5459        impl alloy_sol_types::SolCall for espTokenCall {
5460            type Parameters<'a> = ();
5461            type Token<'a> = <Self::Parameters<
5462                'a,
5463            > as alloy_sol_types::SolType>::Token<'a>;
5464            type Return = alloy::sol_types::private::Address;
5465            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
5466            type ReturnToken<'a> = <Self::ReturnTuple<
5467                'a,
5468            > as alloy_sol_types::SolType>::Token<'a>;
5469            const SIGNATURE: &'static str = "espToken()";
5470            const SELECTOR: [u8; 4] = [240u8, 146u8, 225u8, 58u8];
5471            #[inline]
5472            fn new<'a>(
5473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5474            ) -> Self {
5475                tuple.into()
5476            }
5477            #[inline]
5478            fn tokenize(&self) -> Self::Token<'_> {
5479                ()
5480            }
5481            #[inline]
5482            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5483                (
5484                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5485                        ret,
5486                    ),
5487                )
5488            }
5489            #[inline]
5490            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5491                <Self::ReturnTuple<
5492                    '_,
5493                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5494                    .map(|r| {
5495                        let r: espTokenReturn = r.into();
5496                        r._0
5497                    })
5498            }
5499            #[inline]
5500            fn abi_decode_returns_validate(
5501                data: &[u8],
5502            ) -> alloy_sol_types::Result<Self::Return> {
5503                <Self::ReturnTuple<
5504                    '_,
5505                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5506                    .map(|r| {
5507                        let r: espTokenReturn = r.into();
5508                        r._0
5509                    })
5510            }
5511        }
5512    };
5513    #[derive(serde::Serialize, serde::Deserialize)]
5514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5515    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
5516```solidity
5517function getRoleAdmin(bytes32 role) external view returns (bytes32);
5518```*/
5519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5520    #[derive(Clone)]
5521    pub struct getRoleAdminCall {
5522        #[allow(missing_docs)]
5523        pub role: alloy::sol_types::private::FixedBytes<32>,
5524    }
5525    #[derive(serde::Serialize, serde::Deserialize)]
5526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5527    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
5528    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5529    #[derive(Clone)]
5530    pub struct getRoleAdminReturn {
5531        #[allow(missing_docs)]
5532        pub _0: alloy::sol_types::private::FixedBytes<32>,
5533    }
5534    #[allow(
5535        non_camel_case_types,
5536        non_snake_case,
5537        clippy::pub_underscore_fields,
5538        clippy::style
5539    )]
5540    const _: () = {
5541        use alloy::sol_types as alloy_sol_types;
5542        {
5543            #[doc(hidden)]
5544            #[allow(dead_code)]
5545            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5546            #[doc(hidden)]
5547            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5548            #[cfg(test)]
5549            #[allow(dead_code, unreachable_patterns)]
5550            fn _type_assertion(
5551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5552            ) {
5553                match _t {
5554                    alloy_sol_types::private::AssertTypeEq::<
5555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5556                    >(_) => {}
5557                }
5558            }
5559            #[automatically_derived]
5560            #[doc(hidden)]
5561            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
5562                fn from(value: getRoleAdminCall) -> Self {
5563                    (value.role,)
5564                }
5565            }
5566            #[automatically_derived]
5567            #[doc(hidden)]
5568            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
5569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5570                    Self { role: tuple.0 }
5571                }
5572            }
5573        }
5574        {
5575            #[doc(hidden)]
5576            #[allow(dead_code)]
5577            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5578            #[doc(hidden)]
5579            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5580            #[cfg(test)]
5581            #[allow(dead_code, unreachable_patterns)]
5582            fn _type_assertion(
5583                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5584            ) {
5585                match _t {
5586                    alloy_sol_types::private::AssertTypeEq::<
5587                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5588                    >(_) => {}
5589                }
5590            }
5591            #[automatically_derived]
5592            #[doc(hidden)]
5593            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
5594                fn from(value: getRoleAdminReturn) -> Self {
5595                    (value._0,)
5596                }
5597            }
5598            #[automatically_derived]
5599            #[doc(hidden)]
5600            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
5601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5602                    Self { _0: tuple.0 }
5603                }
5604            }
5605        }
5606        #[automatically_derived]
5607        impl alloy_sol_types::SolCall for getRoleAdminCall {
5608            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5609            type Token<'a> = <Self::Parameters<
5610                'a,
5611            > as alloy_sol_types::SolType>::Token<'a>;
5612            type Return = alloy::sol_types::private::FixedBytes<32>;
5613            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5614            type ReturnToken<'a> = <Self::ReturnTuple<
5615                'a,
5616            > as alloy_sol_types::SolType>::Token<'a>;
5617            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
5618            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
5619            #[inline]
5620            fn new<'a>(
5621                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5622            ) -> Self {
5623                tuple.into()
5624            }
5625            #[inline]
5626            fn tokenize(&self) -> Self::Token<'_> {
5627                (
5628                    <alloy::sol_types::sol_data::FixedBytes<
5629                        32,
5630                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5631                )
5632            }
5633            #[inline]
5634            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5635                (
5636                    <alloy::sol_types::sol_data::FixedBytes<
5637                        32,
5638                    > as alloy_sol_types::SolType>::tokenize(ret),
5639                )
5640            }
5641            #[inline]
5642            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5643                <Self::ReturnTuple<
5644                    '_,
5645                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5646                    .map(|r| {
5647                        let r: getRoleAdminReturn = r.into();
5648                        r._0
5649                    })
5650            }
5651            #[inline]
5652            fn abi_decode_returns_validate(
5653                data: &[u8],
5654            ) -> alloy_sol_types::Result<Self::Return> {
5655                <Self::ReturnTuple<
5656                    '_,
5657                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5658                    .map(|r| {
5659                        let r: getRoleAdminReturn = r.into();
5660                        r._0
5661                    })
5662            }
5663        }
5664    };
5665    #[derive(serde::Serialize, serde::Deserialize)]
5666    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5667    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
5668```solidity
5669function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
5670```*/
5671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5672    #[derive(Clone)]
5673    pub struct getVersionCall;
5674    #[derive(serde::Serialize, serde::Deserialize)]
5675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5676    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
5677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5678    #[derive(Clone)]
5679    pub struct getVersionReturn {
5680        #[allow(missing_docs)]
5681        pub majorVersion: u8,
5682        #[allow(missing_docs)]
5683        pub minorVersion: u8,
5684        #[allow(missing_docs)]
5685        pub patchVersion: u8,
5686    }
5687    #[allow(
5688        non_camel_case_types,
5689        non_snake_case,
5690        clippy::pub_underscore_fields,
5691        clippy::style
5692    )]
5693    const _: () = {
5694        use alloy::sol_types as alloy_sol_types;
5695        {
5696            #[doc(hidden)]
5697            #[allow(dead_code)]
5698            type UnderlyingSolTuple<'a> = ();
5699            #[doc(hidden)]
5700            type UnderlyingRustTuple<'a> = ();
5701            #[cfg(test)]
5702            #[allow(dead_code, unreachable_patterns)]
5703            fn _type_assertion(
5704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5705            ) {
5706                match _t {
5707                    alloy_sol_types::private::AssertTypeEq::<
5708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5709                    >(_) => {}
5710                }
5711            }
5712            #[automatically_derived]
5713            #[doc(hidden)]
5714            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
5715                fn from(value: getVersionCall) -> Self {
5716                    ()
5717                }
5718            }
5719            #[automatically_derived]
5720            #[doc(hidden)]
5721            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
5722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5723                    Self
5724                }
5725            }
5726        }
5727        {
5728            #[doc(hidden)]
5729            #[allow(dead_code)]
5730            type UnderlyingSolTuple<'a> = (
5731                alloy::sol_types::sol_data::Uint<8>,
5732                alloy::sol_types::sol_data::Uint<8>,
5733                alloy::sol_types::sol_data::Uint<8>,
5734            );
5735            #[doc(hidden)]
5736            type UnderlyingRustTuple<'a> = (u8, u8, u8);
5737            #[cfg(test)]
5738            #[allow(dead_code, unreachable_patterns)]
5739            fn _type_assertion(
5740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5741            ) {
5742                match _t {
5743                    alloy_sol_types::private::AssertTypeEq::<
5744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5745                    >(_) => {}
5746                }
5747            }
5748            #[automatically_derived]
5749            #[doc(hidden)]
5750            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
5751                fn from(value: getVersionReturn) -> Self {
5752                    (value.majorVersion, value.minorVersion, value.patchVersion)
5753                }
5754            }
5755            #[automatically_derived]
5756            #[doc(hidden)]
5757            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
5758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5759                    Self {
5760                        majorVersion: tuple.0,
5761                        minorVersion: tuple.1,
5762                        patchVersion: tuple.2,
5763                    }
5764                }
5765            }
5766        }
5767        impl getVersionReturn {
5768            fn _tokenize(
5769                &self,
5770            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5771                (
5772                    <alloy::sol_types::sol_data::Uint<
5773                        8,
5774                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
5775                    <alloy::sol_types::sol_data::Uint<
5776                        8,
5777                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
5778                    <alloy::sol_types::sol_data::Uint<
5779                        8,
5780                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
5781                )
5782            }
5783        }
5784        #[automatically_derived]
5785        impl alloy_sol_types::SolCall for getVersionCall {
5786            type Parameters<'a> = ();
5787            type Token<'a> = <Self::Parameters<
5788                'a,
5789            > as alloy_sol_types::SolType>::Token<'a>;
5790            type Return = getVersionReturn;
5791            type ReturnTuple<'a> = (
5792                alloy::sol_types::sol_data::Uint<8>,
5793                alloy::sol_types::sol_data::Uint<8>,
5794                alloy::sol_types::sol_data::Uint<8>,
5795            );
5796            type ReturnToken<'a> = <Self::ReturnTuple<
5797                'a,
5798            > as alloy_sol_types::SolType>::Token<'a>;
5799            const SIGNATURE: &'static str = "getVersion()";
5800            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
5801            #[inline]
5802            fn new<'a>(
5803                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5804            ) -> Self {
5805                tuple.into()
5806            }
5807            #[inline]
5808            fn tokenize(&self) -> Self::Token<'_> {
5809                ()
5810            }
5811            #[inline]
5812            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5813                getVersionReturn::_tokenize(ret)
5814            }
5815            #[inline]
5816            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5817                <Self::ReturnTuple<
5818                    '_,
5819                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5820                    .map(Into::into)
5821            }
5822            #[inline]
5823            fn abi_decode_returns_validate(
5824                data: &[u8],
5825            ) -> alloy_sol_types::Result<Self::Return> {
5826                <Self::ReturnTuple<
5827                    '_,
5828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5829                    .map(Into::into)
5830            }
5831        }
5832    };
5833    #[derive(serde::Serialize, serde::Deserialize)]
5834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5835    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
5836```solidity
5837function grantRole(bytes32 role, address account) external;
5838```*/
5839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5840    #[derive(Clone)]
5841    pub struct grantRoleCall {
5842        #[allow(missing_docs)]
5843        pub role: alloy::sol_types::private::FixedBytes<32>,
5844        #[allow(missing_docs)]
5845        pub account: alloy::sol_types::private::Address,
5846    }
5847    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
5848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5849    #[derive(Clone)]
5850    pub struct grantRoleReturn {}
5851    #[allow(
5852        non_camel_case_types,
5853        non_snake_case,
5854        clippy::pub_underscore_fields,
5855        clippy::style
5856    )]
5857    const _: () = {
5858        use alloy::sol_types as alloy_sol_types;
5859        {
5860            #[doc(hidden)]
5861            #[allow(dead_code)]
5862            type UnderlyingSolTuple<'a> = (
5863                alloy::sol_types::sol_data::FixedBytes<32>,
5864                alloy::sol_types::sol_data::Address,
5865            );
5866            #[doc(hidden)]
5867            type UnderlyingRustTuple<'a> = (
5868                alloy::sol_types::private::FixedBytes<32>,
5869                alloy::sol_types::private::Address,
5870            );
5871            #[cfg(test)]
5872            #[allow(dead_code, unreachable_patterns)]
5873            fn _type_assertion(
5874                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5875            ) {
5876                match _t {
5877                    alloy_sol_types::private::AssertTypeEq::<
5878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5879                    >(_) => {}
5880                }
5881            }
5882            #[automatically_derived]
5883            #[doc(hidden)]
5884            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
5885                fn from(value: grantRoleCall) -> Self {
5886                    (value.role, value.account)
5887                }
5888            }
5889            #[automatically_derived]
5890            #[doc(hidden)]
5891            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
5892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5893                    Self {
5894                        role: tuple.0,
5895                        account: tuple.1,
5896                    }
5897                }
5898            }
5899        }
5900        {
5901            #[doc(hidden)]
5902            #[allow(dead_code)]
5903            type UnderlyingSolTuple<'a> = ();
5904            #[doc(hidden)]
5905            type UnderlyingRustTuple<'a> = ();
5906            #[cfg(test)]
5907            #[allow(dead_code, unreachable_patterns)]
5908            fn _type_assertion(
5909                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5910            ) {
5911                match _t {
5912                    alloy_sol_types::private::AssertTypeEq::<
5913                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5914                    >(_) => {}
5915                }
5916            }
5917            #[automatically_derived]
5918            #[doc(hidden)]
5919            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
5920                fn from(value: grantRoleReturn) -> Self {
5921                    ()
5922                }
5923            }
5924            #[automatically_derived]
5925            #[doc(hidden)]
5926            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
5927                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5928                    Self {}
5929                }
5930            }
5931        }
5932        impl grantRoleReturn {
5933            fn _tokenize(
5934                &self,
5935            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5936                ()
5937            }
5938        }
5939        #[automatically_derived]
5940        impl alloy_sol_types::SolCall for grantRoleCall {
5941            type Parameters<'a> = (
5942                alloy::sol_types::sol_data::FixedBytes<32>,
5943                alloy::sol_types::sol_data::Address,
5944            );
5945            type Token<'a> = <Self::Parameters<
5946                'a,
5947            > as alloy_sol_types::SolType>::Token<'a>;
5948            type Return = grantRoleReturn;
5949            type ReturnTuple<'a> = ();
5950            type ReturnToken<'a> = <Self::ReturnTuple<
5951                'a,
5952            > as alloy_sol_types::SolType>::Token<'a>;
5953            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
5954            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
5955            #[inline]
5956            fn new<'a>(
5957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5958            ) -> Self {
5959                tuple.into()
5960            }
5961            #[inline]
5962            fn tokenize(&self) -> Self::Token<'_> {
5963                (
5964                    <alloy::sol_types::sol_data::FixedBytes<
5965                        32,
5966                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5967                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5968                        &self.account,
5969                    ),
5970                )
5971            }
5972            #[inline]
5973            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5974                grantRoleReturn::_tokenize(ret)
5975            }
5976            #[inline]
5977            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5978                <Self::ReturnTuple<
5979                    '_,
5980                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5981                    .map(Into::into)
5982            }
5983            #[inline]
5984            fn abi_decode_returns_validate(
5985                data: &[u8],
5986            ) -> alloy_sol_types::Result<Self::Return> {
5987                <Self::ReturnTuple<
5988                    '_,
5989                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5990                    .map(Into::into)
5991            }
5992        }
5993    };
5994    #[derive(serde::Serialize, serde::Deserialize)]
5995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5996    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
5997```solidity
5998function hasRole(bytes32 role, address account) external view returns (bool);
5999```*/
6000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6001    #[derive(Clone)]
6002    pub struct hasRoleCall {
6003        #[allow(missing_docs)]
6004        pub role: alloy::sol_types::private::FixedBytes<32>,
6005        #[allow(missing_docs)]
6006        pub account: alloy::sol_types::private::Address,
6007    }
6008    #[derive(serde::Serialize, serde::Deserialize)]
6009    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6010    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
6011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6012    #[derive(Clone)]
6013    pub struct hasRoleReturn {
6014        #[allow(missing_docs)]
6015        pub _0: bool,
6016    }
6017    #[allow(
6018        non_camel_case_types,
6019        non_snake_case,
6020        clippy::pub_underscore_fields,
6021        clippy::style
6022    )]
6023    const _: () = {
6024        use alloy::sol_types as alloy_sol_types;
6025        {
6026            #[doc(hidden)]
6027            #[allow(dead_code)]
6028            type UnderlyingSolTuple<'a> = (
6029                alloy::sol_types::sol_data::FixedBytes<32>,
6030                alloy::sol_types::sol_data::Address,
6031            );
6032            #[doc(hidden)]
6033            type UnderlyingRustTuple<'a> = (
6034                alloy::sol_types::private::FixedBytes<32>,
6035                alloy::sol_types::private::Address,
6036            );
6037            #[cfg(test)]
6038            #[allow(dead_code, unreachable_patterns)]
6039            fn _type_assertion(
6040                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6041            ) {
6042                match _t {
6043                    alloy_sol_types::private::AssertTypeEq::<
6044                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6045                    >(_) => {}
6046                }
6047            }
6048            #[automatically_derived]
6049            #[doc(hidden)]
6050            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
6051                fn from(value: hasRoleCall) -> Self {
6052                    (value.role, value.account)
6053                }
6054            }
6055            #[automatically_derived]
6056            #[doc(hidden)]
6057            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
6058                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6059                    Self {
6060                        role: tuple.0,
6061                        account: tuple.1,
6062                    }
6063                }
6064            }
6065        }
6066        {
6067            #[doc(hidden)]
6068            #[allow(dead_code)]
6069            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6070            #[doc(hidden)]
6071            type UnderlyingRustTuple<'a> = (bool,);
6072            #[cfg(test)]
6073            #[allow(dead_code, unreachable_patterns)]
6074            fn _type_assertion(
6075                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6076            ) {
6077                match _t {
6078                    alloy_sol_types::private::AssertTypeEq::<
6079                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6080                    >(_) => {}
6081                }
6082            }
6083            #[automatically_derived]
6084            #[doc(hidden)]
6085            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
6086                fn from(value: hasRoleReturn) -> Self {
6087                    (value._0,)
6088                }
6089            }
6090            #[automatically_derived]
6091            #[doc(hidden)]
6092            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
6093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6094                    Self { _0: tuple.0 }
6095                }
6096            }
6097        }
6098        #[automatically_derived]
6099        impl alloy_sol_types::SolCall for hasRoleCall {
6100            type Parameters<'a> = (
6101                alloy::sol_types::sol_data::FixedBytes<32>,
6102                alloy::sol_types::sol_data::Address,
6103            );
6104            type Token<'a> = <Self::Parameters<
6105                'a,
6106            > as alloy_sol_types::SolType>::Token<'a>;
6107            type Return = bool;
6108            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6109            type ReturnToken<'a> = <Self::ReturnTuple<
6110                'a,
6111            > as alloy_sol_types::SolType>::Token<'a>;
6112            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
6113            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
6114            #[inline]
6115            fn new<'a>(
6116                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6117            ) -> Self {
6118                tuple.into()
6119            }
6120            #[inline]
6121            fn tokenize(&self) -> Self::Token<'_> {
6122                (
6123                    <alloy::sol_types::sol_data::FixedBytes<
6124                        32,
6125                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6126                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6127                        &self.account,
6128                    ),
6129                )
6130            }
6131            #[inline]
6132            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6133                (
6134                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6135                        ret,
6136                    ),
6137                )
6138            }
6139            #[inline]
6140            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6141                <Self::ReturnTuple<
6142                    '_,
6143                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6144                    .map(|r| {
6145                        let r: hasRoleReturn = r.into();
6146                        r._0
6147                    })
6148            }
6149            #[inline]
6150            fn abi_decode_returns_validate(
6151                data: &[u8],
6152            ) -> alloy_sol_types::Result<Self::Return> {
6153                <Self::ReturnTuple<
6154                    '_,
6155                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6156                    .map(|r| {
6157                        let r: hasRoleReturn = r.into();
6158                        r._0
6159                    })
6160            }
6161        }
6162    };
6163    #[derive(serde::Serialize, serde::Deserialize)]
6164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6165    /**Function with signature `initialize(address,address,address,address)` and selector `0xf8c8765e`.
6166```solidity
6167function initialize(address _admin, address _espToken, address _lightClient, address _pauser) external;
6168```*/
6169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6170    #[derive(Clone)]
6171    pub struct initializeCall {
6172        #[allow(missing_docs)]
6173        pub _admin: alloy::sol_types::private::Address,
6174        #[allow(missing_docs)]
6175        pub _espToken: alloy::sol_types::private::Address,
6176        #[allow(missing_docs)]
6177        pub _lightClient: alloy::sol_types::private::Address,
6178        #[allow(missing_docs)]
6179        pub _pauser: alloy::sol_types::private::Address,
6180    }
6181    ///Container type for the return parameters of the [`initialize(address,address,address,address)`](initializeCall) function.
6182    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6183    #[derive(Clone)]
6184    pub struct initializeReturn {}
6185    #[allow(
6186        non_camel_case_types,
6187        non_snake_case,
6188        clippy::pub_underscore_fields,
6189        clippy::style
6190    )]
6191    const _: () = {
6192        use alloy::sol_types as alloy_sol_types;
6193        {
6194            #[doc(hidden)]
6195            #[allow(dead_code)]
6196            type UnderlyingSolTuple<'a> = (
6197                alloy::sol_types::sol_data::Address,
6198                alloy::sol_types::sol_data::Address,
6199                alloy::sol_types::sol_data::Address,
6200                alloy::sol_types::sol_data::Address,
6201            );
6202            #[doc(hidden)]
6203            type UnderlyingRustTuple<'a> = (
6204                alloy::sol_types::private::Address,
6205                alloy::sol_types::private::Address,
6206                alloy::sol_types::private::Address,
6207                alloy::sol_types::private::Address,
6208            );
6209            #[cfg(test)]
6210            #[allow(dead_code, unreachable_patterns)]
6211            fn _type_assertion(
6212                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6213            ) {
6214                match _t {
6215                    alloy_sol_types::private::AssertTypeEq::<
6216                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6217                    >(_) => {}
6218                }
6219            }
6220            #[automatically_derived]
6221            #[doc(hidden)]
6222            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
6223                fn from(value: initializeCall) -> Self {
6224                    (value._admin, value._espToken, value._lightClient, value._pauser)
6225                }
6226            }
6227            #[automatically_derived]
6228            #[doc(hidden)]
6229            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
6230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6231                    Self {
6232                        _admin: tuple.0,
6233                        _espToken: tuple.1,
6234                        _lightClient: tuple.2,
6235                        _pauser: tuple.3,
6236                    }
6237                }
6238            }
6239        }
6240        {
6241            #[doc(hidden)]
6242            #[allow(dead_code)]
6243            type UnderlyingSolTuple<'a> = ();
6244            #[doc(hidden)]
6245            type UnderlyingRustTuple<'a> = ();
6246            #[cfg(test)]
6247            #[allow(dead_code, unreachable_patterns)]
6248            fn _type_assertion(
6249                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6250            ) {
6251                match _t {
6252                    alloy_sol_types::private::AssertTypeEq::<
6253                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6254                    >(_) => {}
6255                }
6256            }
6257            #[automatically_derived]
6258            #[doc(hidden)]
6259            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
6260                fn from(value: initializeReturn) -> Self {
6261                    ()
6262                }
6263            }
6264            #[automatically_derived]
6265            #[doc(hidden)]
6266            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
6267                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6268                    Self {}
6269                }
6270            }
6271        }
6272        impl initializeReturn {
6273            fn _tokenize(
6274                &self,
6275            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6276                ()
6277            }
6278        }
6279        #[automatically_derived]
6280        impl alloy_sol_types::SolCall for initializeCall {
6281            type Parameters<'a> = (
6282                alloy::sol_types::sol_data::Address,
6283                alloy::sol_types::sol_data::Address,
6284                alloy::sol_types::sol_data::Address,
6285                alloy::sol_types::sol_data::Address,
6286            );
6287            type Token<'a> = <Self::Parameters<
6288                'a,
6289            > as alloy_sol_types::SolType>::Token<'a>;
6290            type Return = initializeReturn;
6291            type ReturnTuple<'a> = ();
6292            type ReturnToken<'a> = <Self::ReturnTuple<
6293                'a,
6294            > as alloy_sol_types::SolType>::Token<'a>;
6295            const SIGNATURE: &'static str = "initialize(address,address,address,address)";
6296            const SELECTOR: [u8; 4] = [248u8, 200u8, 118u8, 94u8];
6297            #[inline]
6298            fn new<'a>(
6299                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6300            ) -> Self {
6301                tuple.into()
6302            }
6303            #[inline]
6304            fn tokenize(&self) -> Self::Token<'_> {
6305                (
6306                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6307                        &self._admin,
6308                    ),
6309                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6310                        &self._espToken,
6311                    ),
6312                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6313                        &self._lightClient,
6314                    ),
6315                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6316                        &self._pauser,
6317                    ),
6318                )
6319            }
6320            #[inline]
6321            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6322                initializeReturn::_tokenize(ret)
6323            }
6324            #[inline]
6325            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6326                <Self::ReturnTuple<
6327                    '_,
6328                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6329                    .map(Into::into)
6330            }
6331            #[inline]
6332            fn abi_decode_returns_validate(
6333                data: &[u8],
6334            ) -> alloy_sol_types::Result<Self::Return> {
6335                <Self::ReturnTuple<
6336                    '_,
6337                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6338                    .map(Into::into)
6339            }
6340        }
6341    };
6342    #[derive(serde::Serialize, serde::Deserialize)]
6343    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6344    /**Function with signature `lastSetDailyLimitBasisPoints()` and selector `0x0f6ca1d6`.
6345```solidity
6346function lastSetDailyLimitBasisPoints() external view returns (uint256);
6347```*/
6348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6349    #[derive(Clone)]
6350    pub struct lastSetDailyLimitBasisPointsCall;
6351    #[derive(serde::Serialize, serde::Deserialize)]
6352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6353    ///Container type for the return parameters of the [`lastSetDailyLimitBasisPoints()`](lastSetDailyLimitBasisPointsCall) function.
6354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6355    #[derive(Clone)]
6356    pub struct lastSetDailyLimitBasisPointsReturn {
6357        #[allow(missing_docs)]
6358        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6359    }
6360    #[allow(
6361        non_camel_case_types,
6362        non_snake_case,
6363        clippy::pub_underscore_fields,
6364        clippy::style
6365    )]
6366    const _: () = {
6367        use alloy::sol_types as alloy_sol_types;
6368        {
6369            #[doc(hidden)]
6370            #[allow(dead_code)]
6371            type UnderlyingSolTuple<'a> = ();
6372            #[doc(hidden)]
6373            type UnderlyingRustTuple<'a> = ();
6374            #[cfg(test)]
6375            #[allow(dead_code, unreachable_patterns)]
6376            fn _type_assertion(
6377                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6378            ) {
6379                match _t {
6380                    alloy_sol_types::private::AssertTypeEq::<
6381                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6382                    >(_) => {}
6383                }
6384            }
6385            #[automatically_derived]
6386            #[doc(hidden)]
6387            impl ::core::convert::From<lastSetDailyLimitBasisPointsCall>
6388            for UnderlyingRustTuple<'_> {
6389                fn from(value: lastSetDailyLimitBasisPointsCall) -> Self {
6390                    ()
6391                }
6392            }
6393            #[automatically_derived]
6394            #[doc(hidden)]
6395            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6396            for lastSetDailyLimitBasisPointsCall {
6397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6398                    Self
6399                }
6400            }
6401        }
6402        {
6403            #[doc(hidden)]
6404            #[allow(dead_code)]
6405            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6406            #[doc(hidden)]
6407            type UnderlyingRustTuple<'a> = (
6408                alloy::sol_types::private::primitives::aliases::U256,
6409            );
6410            #[cfg(test)]
6411            #[allow(dead_code, unreachable_patterns)]
6412            fn _type_assertion(
6413                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6414            ) {
6415                match _t {
6416                    alloy_sol_types::private::AssertTypeEq::<
6417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6418                    >(_) => {}
6419                }
6420            }
6421            #[automatically_derived]
6422            #[doc(hidden)]
6423            impl ::core::convert::From<lastSetDailyLimitBasisPointsReturn>
6424            for UnderlyingRustTuple<'_> {
6425                fn from(value: lastSetDailyLimitBasisPointsReturn) -> Self {
6426                    (value._0,)
6427                }
6428            }
6429            #[automatically_derived]
6430            #[doc(hidden)]
6431            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6432            for lastSetDailyLimitBasisPointsReturn {
6433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6434                    Self { _0: tuple.0 }
6435                }
6436            }
6437        }
6438        #[automatically_derived]
6439        impl alloy_sol_types::SolCall for lastSetDailyLimitBasisPointsCall {
6440            type Parameters<'a> = ();
6441            type Token<'a> = <Self::Parameters<
6442                'a,
6443            > as alloy_sol_types::SolType>::Token<'a>;
6444            type Return = alloy::sol_types::private::primitives::aliases::U256;
6445            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6446            type ReturnToken<'a> = <Self::ReturnTuple<
6447                'a,
6448            > as alloy_sol_types::SolType>::Token<'a>;
6449            const SIGNATURE: &'static str = "lastSetDailyLimitBasisPoints()";
6450            const SELECTOR: [u8; 4] = [15u8, 108u8, 161u8, 214u8];
6451            #[inline]
6452            fn new<'a>(
6453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6454            ) -> Self {
6455                tuple.into()
6456            }
6457            #[inline]
6458            fn tokenize(&self) -> Self::Token<'_> {
6459                ()
6460            }
6461            #[inline]
6462            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6463                (
6464                    <alloy::sol_types::sol_data::Uint<
6465                        256,
6466                    > as alloy_sol_types::SolType>::tokenize(ret),
6467                )
6468            }
6469            #[inline]
6470            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6471                <Self::ReturnTuple<
6472                    '_,
6473                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6474                    .map(|r| {
6475                        let r: lastSetDailyLimitBasisPointsReturn = r.into();
6476                        r._0
6477                    })
6478            }
6479            #[inline]
6480            fn abi_decode_returns_validate(
6481                data: &[u8],
6482            ) -> alloy_sol_types::Result<Self::Return> {
6483                <Self::ReturnTuple<
6484                    '_,
6485                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6486                    .map(|r| {
6487                        let r: lastSetDailyLimitBasisPointsReturn = r.into();
6488                        r._0
6489                    })
6490            }
6491        }
6492    };
6493    #[derive(serde::Serialize, serde::Deserialize)]
6494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6495    /**Function with signature `lightClient()` and selector `0xb5700e68`.
6496```solidity
6497function lightClient() external view returns (address);
6498```*/
6499    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6500    #[derive(Clone)]
6501    pub struct lightClientCall;
6502    #[derive(serde::Serialize, serde::Deserialize)]
6503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6504    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
6505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6506    #[derive(Clone)]
6507    pub struct lightClientReturn {
6508        #[allow(missing_docs)]
6509        pub _0: alloy::sol_types::private::Address,
6510    }
6511    #[allow(
6512        non_camel_case_types,
6513        non_snake_case,
6514        clippy::pub_underscore_fields,
6515        clippy::style
6516    )]
6517    const _: () = {
6518        use alloy::sol_types as alloy_sol_types;
6519        {
6520            #[doc(hidden)]
6521            #[allow(dead_code)]
6522            type UnderlyingSolTuple<'a> = ();
6523            #[doc(hidden)]
6524            type UnderlyingRustTuple<'a> = ();
6525            #[cfg(test)]
6526            #[allow(dead_code, unreachable_patterns)]
6527            fn _type_assertion(
6528                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6529            ) {
6530                match _t {
6531                    alloy_sol_types::private::AssertTypeEq::<
6532                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6533                    >(_) => {}
6534                }
6535            }
6536            #[automatically_derived]
6537            #[doc(hidden)]
6538            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
6539                fn from(value: lightClientCall) -> Self {
6540                    ()
6541                }
6542            }
6543            #[automatically_derived]
6544            #[doc(hidden)]
6545            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
6546                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6547                    Self
6548                }
6549            }
6550        }
6551        {
6552            #[doc(hidden)]
6553            #[allow(dead_code)]
6554            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6555            #[doc(hidden)]
6556            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6557            #[cfg(test)]
6558            #[allow(dead_code, unreachable_patterns)]
6559            fn _type_assertion(
6560                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6561            ) {
6562                match _t {
6563                    alloy_sol_types::private::AssertTypeEq::<
6564                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6565                    >(_) => {}
6566                }
6567            }
6568            #[automatically_derived]
6569            #[doc(hidden)]
6570            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
6571                fn from(value: lightClientReturn) -> Self {
6572                    (value._0,)
6573                }
6574            }
6575            #[automatically_derived]
6576            #[doc(hidden)]
6577            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
6578                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6579                    Self { _0: tuple.0 }
6580                }
6581            }
6582        }
6583        #[automatically_derived]
6584        impl alloy_sol_types::SolCall for lightClientCall {
6585            type Parameters<'a> = ();
6586            type Token<'a> = <Self::Parameters<
6587                'a,
6588            > as alloy_sol_types::SolType>::Token<'a>;
6589            type Return = alloy::sol_types::private::Address;
6590            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6591            type ReturnToken<'a> = <Self::ReturnTuple<
6592                'a,
6593            > as alloy_sol_types::SolType>::Token<'a>;
6594            const SIGNATURE: &'static str = "lightClient()";
6595            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
6596            #[inline]
6597            fn new<'a>(
6598                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6599            ) -> Self {
6600                tuple.into()
6601            }
6602            #[inline]
6603            fn tokenize(&self) -> Self::Token<'_> {
6604                ()
6605            }
6606            #[inline]
6607            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6608                (
6609                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6610                        ret,
6611                    ),
6612                )
6613            }
6614            #[inline]
6615            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6616                <Self::ReturnTuple<
6617                    '_,
6618                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6619                    .map(|r| {
6620                        let r: lightClientReturn = r.into();
6621                        r._0
6622                    })
6623            }
6624            #[inline]
6625            fn abi_decode_returns_validate(
6626                data: &[u8],
6627            ) -> alloy_sol_types::Result<Self::Return> {
6628                <Self::ReturnTuple<
6629                    '_,
6630                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6631                    .map(|r| {
6632                        let r: lightClientReturn = r.into();
6633                        r._0
6634                    })
6635            }
6636        }
6637    };
6638    #[derive(serde::Serialize, serde::Deserialize)]
6639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6640    /**Function with signature `pause()` and selector `0x8456cb59`.
6641```solidity
6642function pause() external;
6643```*/
6644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6645    #[derive(Clone)]
6646    pub struct pauseCall;
6647    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
6648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6649    #[derive(Clone)]
6650    pub struct pauseReturn {}
6651    #[allow(
6652        non_camel_case_types,
6653        non_snake_case,
6654        clippy::pub_underscore_fields,
6655        clippy::style
6656    )]
6657    const _: () = {
6658        use alloy::sol_types as alloy_sol_types;
6659        {
6660            #[doc(hidden)]
6661            #[allow(dead_code)]
6662            type UnderlyingSolTuple<'a> = ();
6663            #[doc(hidden)]
6664            type UnderlyingRustTuple<'a> = ();
6665            #[cfg(test)]
6666            #[allow(dead_code, unreachable_patterns)]
6667            fn _type_assertion(
6668                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6669            ) {
6670                match _t {
6671                    alloy_sol_types::private::AssertTypeEq::<
6672                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6673                    >(_) => {}
6674                }
6675            }
6676            #[automatically_derived]
6677            #[doc(hidden)]
6678            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
6679                fn from(value: pauseCall) -> Self {
6680                    ()
6681                }
6682            }
6683            #[automatically_derived]
6684            #[doc(hidden)]
6685            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
6686                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6687                    Self
6688                }
6689            }
6690        }
6691        {
6692            #[doc(hidden)]
6693            #[allow(dead_code)]
6694            type UnderlyingSolTuple<'a> = ();
6695            #[doc(hidden)]
6696            type UnderlyingRustTuple<'a> = ();
6697            #[cfg(test)]
6698            #[allow(dead_code, unreachable_patterns)]
6699            fn _type_assertion(
6700                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6701            ) {
6702                match _t {
6703                    alloy_sol_types::private::AssertTypeEq::<
6704                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6705                    >(_) => {}
6706                }
6707            }
6708            #[automatically_derived]
6709            #[doc(hidden)]
6710            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
6711                fn from(value: pauseReturn) -> Self {
6712                    ()
6713                }
6714            }
6715            #[automatically_derived]
6716            #[doc(hidden)]
6717            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
6718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6719                    Self {}
6720                }
6721            }
6722        }
6723        impl pauseReturn {
6724            fn _tokenize(
6725                &self,
6726            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6727                ()
6728            }
6729        }
6730        #[automatically_derived]
6731        impl alloy_sol_types::SolCall for pauseCall {
6732            type Parameters<'a> = ();
6733            type Token<'a> = <Self::Parameters<
6734                'a,
6735            > as alloy_sol_types::SolType>::Token<'a>;
6736            type Return = pauseReturn;
6737            type ReturnTuple<'a> = ();
6738            type ReturnToken<'a> = <Self::ReturnTuple<
6739                'a,
6740            > as alloy_sol_types::SolType>::Token<'a>;
6741            const SIGNATURE: &'static str = "pause()";
6742            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
6743            #[inline]
6744            fn new<'a>(
6745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6746            ) -> Self {
6747                tuple.into()
6748            }
6749            #[inline]
6750            fn tokenize(&self) -> Self::Token<'_> {
6751                ()
6752            }
6753            #[inline]
6754            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6755                pauseReturn::_tokenize(ret)
6756            }
6757            #[inline]
6758            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6759                <Self::ReturnTuple<
6760                    '_,
6761                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6762                    .map(Into::into)
6763            }
6764            #[inline]
6765            fn abi_decode_returns_validate(
6766                data: &[u8],
6767            ) -> alloy_sol_types::Result<Self::Return> {
6768                <Self::ReturnTuple<
6769                    '_,
6770                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6771                    .map(Into::into)
6772            }
6773        }
6774    };
6775    #[derive(serde::Serialize, serde::Deserialize)]
6776    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6777    /**Function with signature `paused()` and selector `0x5c975abb`.
6778```solidity
6779function paused() external view returns (bool);
6780```*/
6781    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6782    #[derive(Clone)]
6783    pub struct pausedCall;
6784    #[derive(serde::Serialize, serde::Deserialize)]
6785    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6786    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
6787    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6788    #[derive(Clone)]
6789    pub struct pausedReturn {
6790        #[allow(missing_docs)]
6791        pub _0: bool,
6792    }
6793    #[allow(
6794        non_camel_case_types,
6795        non_snake_case,
6796        clippy::pub_underscore_fields,
6797        clippy::style
6798    )]
6799    const _: () = {
6800        use alloy::sol_types as alloy_sol_types;
6801        {
6802            #[doc(hidden)]
6803            #[allow(dead_code)]
6804            type UnderlyingSolTuple<'a> = ();
6805            #[doc(hidden)]
6806            type UnderlyingRustTuple<'a> = ();
6807            #[cfg(test)]
6808            #[allow(dead_code, unreachable_patterns)]
6809            fn _type_assertion(
6810                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6811            ) {
6812                match _t {
6813                    alloy_sol_types::private::AssertTypeEq::<
6814                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6815                    >(_) => {}
6816                }
6817            }
6818            #[automatically_derived]
6819            #[doc(hidden)]
6820            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
6821                fn from(value: pausedCall) -> Self {
6822                    ()
6823                }
6824            }
6825            #[automatically_derived]
6826            #[doc(hidden)]
6827            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
6828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6829                    Self
6830                }
6831            }
6832        }
6833        {
6834            #[doc(hidden)]
6835            #[allow(dead_code)]
6836            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6837            #[doc(hidden)]
6838            type UnderlyingRustTuple<'a> = (bool,);
6839            #[cfg(test)]
6840            #[allow(dead_code, unreachable_patterns)]
6841            fn _type_assertion(
6842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6843            ) {
6844                match _t {
6845                    alloy_sol_types::private::AssertTypeEq::<
6846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6847                    >(_) => {}
6848                }
6849            }
6850            #[automatically_derived]
6851            #[doc(hidden)]
6852            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
6853                fn from(value: pausedReturn) -> Self {
6854                    (value._0,)
6855                }
6856            }
6857            #[automatically_derived]
6858            #[doc(hidden)]
6859            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
6860                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6861                    Self { _0: tuple.0 }
6862                }
6863            }
6864        }
6865        #[automatically_derived]
6866        impl alloy_sol_types::SolCall for pausedCall {
6867            type Parameters<'a> = ();
6868            type Token<'a> = <Self::Parameters<
6869                'a,
6870            > as alloy_sol_types::SolType>::Token<'a>;
6871            type Return = bool;
6872            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6873            type ReturnToken<'a> = <Self::ReturnTuple<
6874                'a,
6875            > as alloy_sol_types::SolType>::Token<'a>;
6876            const SIGNATURE: &'static str = "paused()";
6877            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
6878            #[inline]
6879            fn new<'a>(
6880                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6881            ) -> Self {
6882                tuple.into()
6883            }
6884            #[inline]
6885            fn tokenize(&self) -> Self::Token<'_> {
6886                ()
6887            }
6888            #[inline]
6889            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6890                (
6891                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6892                        ret,
6893                    ),
6894                )
6895            }
6896            #[inline]
6897            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6898                <Self::ReturnTuple<
6899                    '_,
6900                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6901                    .map(|r| {
6902                        let r: pausedReturn = r.into();
6903                        r._0
6904                    })
6905            }
6906            #[inline]
6907            fn abi_decode_returns_validate(
6908                data: &[u8],
6909            ) -> alloy_sol_types::Result<Self::Return> {
6910                <Self::ReturnTuple<
6911                    '_,
6912                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6913                    .map(|r| {
6914                        let r: pausedReturn = r.into();
6915                        r._0
6916                    })
6917            }
6918        }
6919    };
6920    #[derive(serde::Serialize, serde::Deserialize)]
6921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6922    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
6923```solidity
6924function proxiableUUID() external view returns (bytes32);
6925```*/
6926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6927    #[derive(Clone)]
6928    pub struct proxiableUUIDCall;
6929    #[derive(serde::Serialize, serde::Deserialize)]
6930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6931    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
6932    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6933    #[derive(Clone)]
6934    pub struct proxiableUUIDReturn {
6935        #[allow(missing_docs)]
6936        pub _0: alloy::sol_types::private::FixedBytes<32>,
6937    }
6938    #[allow(
6939        non_camel_case_types,
6940        non_snake_case,
6941        clippy::pub_underscore_fields,
6942        clippy::style
6943    )]
6944    const _: () = {
6945        use alloy::sol_types as alloy_sol_types;
6946        {
6947            #[doc(hidden)]
6948            #[allow(dead_code)]
6949            type UnderlyingSolTuple<'a> = ();
6950            #[doc(hidden)]
6951            type UnderlyingRustTuple<'a> = ();
6952            #[cfg(test)]
6953            #[allow(dead_code, unreachable_patterns)]
6954            fn _type_assertion(
6955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6956            ) {
6957                match _t {
6958                    alloy_sol_types::private::AssertTypeEq::<
6959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6960                    >(_) => {}
6961                }
6962            }
6963            #[automatically_derived]
6964            #[doc(hidden)]
6965            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
6966                fn from(value: proxiableUUIDCall) -> Self {
6967                    ()
6968                }
6969            }
6970            #[automatically_derived]
6971            #[doc(hidden)]
6972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
6973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6974                    Self
6975                }
6976            }
6977        }
6978        {
6979            #[doc(hidden)]
6980            #[allow(dead_code)]
6981            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6982            #[doc(hidden)]
6983            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6984            #[cfg(test)]
6985            #[allow(dead_code, unreachable_patterns)]
6986            fn _type_assertion(
6987                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6988            ) {
6989                match _t {
6990                    alloy_sol_types::private::AssertTypeEq::<
6991                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6992                    >(_) => {}
6993                }
6994            }
6995            #[automatically_derived]
6996            #[doc(hidden)]
6997            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
6998                fn from(value: proxiableUUIDReturn) -> Self {
6999                    (value._0,)
7000                }
7001            }
7002            #[automatically_derived]
7003            #[doc(hidden)]
7004            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
7005                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7006                    Self { _0: tuple.0 }
7007                }
7008            }
7009        }
7010        #[automatically_derived]
7011        impl alloy_sol_types::SolCall for proxiableUUIDCall {
7012            type Parameters<'a> = ();
7013            type Token<'a> = <Self::Parameters<
7014                'a,
7015            > as alloy_sol_types::SolType>::Token<'a>;
7016            type Return = alloy::sol_types::private::FixedBytes<32>;
7017            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7018            type ReturnToken<'a> = <Self::ReturnTuple<
7019                'a,
7020            > as alloy_sol_types::SolType>::Token<'a>;
7021            const SIGNATURE: &'static str = "proxiableUUID()";
7022            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
7023            #[inline]
7024            fn new<'a>(
7025                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7026            ) -> Self {
7027                tuple.into()
7028            }
7029            #[inline]
7030            fn tokenize(&self) -> Self::Token<'_> {
7031                ()
7032            }
7033            #[inline]
7034            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7035                (
7036                    <alloy::sol_types::sol_data::FixedBytes<
7037                        32,
7038                    > as alloy_sol_types::SolType>::tokenize(ret),
7039                )
7040            }
7041            #[inline]
7042            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7043                <Self::ReturnTuple<
7044                    '_,
7045                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7046                    .map(|r| {
7047                        let r: proxiableUUIDReturn = r.into();
7048                        r._0
7049                    })
7050            }
7051            #[inline]
7052            fn abi_decode_returns_validate(
7053                data: &[u8],
7054            ) -> alloy_sol_types::Result<Self::Return> {
7055                <Self::ReturnTuple<
7056                    '_,
7057                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7058                    .map(|r| {
7059                        let r: proxiableUUIDReturn = r.into();
7060                        r._0
7061                    })
7062            }
7063        }
7064    };
7065    #[derive(serde::Serialize, serde::Deserialize)]
7066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7067    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
7068```solidity
7069function renounceRole(bytes32 role, address callerConfirmation) external;
7070```*/
7071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7072    #[derive(Clone)]
7073    pub struct renounceRoleCall {
7074        #[allow(missing_docs)]
7075        pub role: alloy::sol_types::private::FixedBytes<32>,
7076        #[allow(missing_docs)]
7077        pub callerConfirmation: alloy::sol_types::private::Address,
7078    }
7079    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
7080    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7081    #[derive(Clone)]
7082    pub struct renounceRoleReturn {}
7083    #[allow(
7084        non_camel_case_types,
7085        non_snake_case,
7086        clippy::pub_underscore_fields,
7087        clippy::style
7088    )]
7089    const _: () = {
7090        use alloy::sol_types as alloy_sol_types;
7091        {
7092            #[doc(hidden)]
7093            #[allow(dead_code)]
7094            type UnderlyingSolTuple<'a> = (
7095                alloy::sol_types::sol_data::FixedBytes<32>,
7096                alloy::sol_types::sol_data::Address,
7097            );
7098            #[doc(hidden)]
7099            type UnderlyingRustTuple<'a> = (
7100                alloy::sol_types::private::FixedBytes<32>,
7101                alloy::sol_types::private::Address,
7102            );
7103            #[cfg(test)]
7104            #[allow(dead_code, unreachable_patterns)]
7105            fn _type_assertion(
7106                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7107            ) {
7108                match _t {
7109                    alloy_sol_types::private::AssertTypeEq::<
7110                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7111                    >(_) => {}
7112                }
7113            }
7114            #[automatically_derived]
7115            #[doc(hidden)]
7116            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
7117                fn from(value: renounceRoleCall) -> Self {
7118                    (value.role, value.callerConfirmation)
7119                }
7120            }
7121            #[automatically_derived]
7122            #[doc(hidden)]
7123            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
7124                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7125                    Self {
7126                        role: tuple.0,
7127                        callerConfirmation: tuple.1,
7128                    }
7129                }
7130            }
7131        }
7132        {
7133            #[doc(hidden)]
7134            #[allow(dead_code)]
7135            type UnderlyingSolTuple<'a> = ();
7136            #[doc(hidden)]
7137            type UnderlyingRustTuple<'a> = ();
7138            #[cfg(test)]
7139            #[allow(dead_code, unreachable_patterns)]
7140            fn _type_assertion(
7141                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7142            ) {
7143                match _t {
7144                    alloy_sol_types::private::AssertTypeEq::<
7145                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7146                    >(_) => {}
7147                }
7148            }
7149            #[automatically_derived]
7150            #[doc(hidden)]
7151            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
7152                fn from(value: renounceRoleReturn) -> Self {
7153                    ()
7154                }
7155            }
7156            #[automatically_derived]
7157            #[doc(hidden)]
7158            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
7159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7160                    Self {}
7161                }
7162            }
7163        }
7164        impl renounceRoleReturn {
7165            fn _tokenize(
7166                &self,
7167            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7168                ()
7169            }
7170        }
7171        #[automatically_derived]
7172        impl alloy_sol_types::SolCall for renounceRoleCall {
7173            type Parameters<'a> = (
7174                alloy::sol_types::sol_data::FixedBytes<32>,
7175                alloy::sol_types::sol_data::Address,
7176            );
7177            type Token<'a> = <Self::Parameters<
7178                'a,
7179            > as alloy_sol_types::SolType>::Token<'a>;
7180            type Return = renounceRoleReturn;
7181            type ReturnTuple<'a> = ();
7182            type ReturnToken<'a> = <Self::ReturnTuple<
7183                'a,
7184            > as alloy_sol_types::SolType>::Token<'a>;
7185            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
7186            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
7187            #[inline]
7188            fn new<'a>(
7189                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7190            ) -> Self {
7191                tuple.into()
7192            }
7193            #[inline]
7194            fn tokenize(&self) -> Self::Token<'_> {
7195                (
7196                    <alloy::sol_types::sol_data::FixedBytes<
7197                        32,
7198                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7199                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7200                        &self.callerConfirmation,
7201                    ),
7202                )
7203            }
7204            #[inline]
7205            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7206                renounceRoleReturn::_tokenize(ret)
7207            }
7208            #[inline]
7209            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7210                <Self::ReturnTuple<
7211                    '_,
7212                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7213                    .map(Into::into)
7214            }
7215            #[inline]
7216            fn abi_decode_returns_validate(
7217                data: &[u8],
7218            ) -> alloy_sol_types::Result<Self::Return> {
7219                <Self::ReturnTuple<
7220                    '_,
7221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7222                    .map(Into::into)
7223            }
7224        }
7225    };
7226    #[derive(serde::Serialize, serde::Deserialize)]
7227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7228    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
7229```solidity
7230function revokeRole(bytes32 role, address account) external;
7231```*/
7232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7233    #[derive(Clone)]
7234    pub struct revokeRoleCall {
7235        #[allow(missing_docs)]
7236        pub role: alloy::sol_types::private::FixedBytes<32>,
7237        #[allow(missing_docs)]
7238        pub account: alloy::sol_types::private::Address,
7239    }
7240    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
7241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7242    #[derive(Clone)]
7243    pub struct revokeRoleReturn {}
7244    #[allow(
7245        non_camel_case_types,
7246        non_snake_case,
7247        clippy::pub_underscore_fields,
7248        clippy::style
7249    )]
7250    const _: () = {
7251        use alloy::sol_types as alloy_sol_types;
7252        {
7253            #[doc(hidden)]
7254            #[allow(dead_code)]
7255            type UnderlyingSolTuple<'a> = (
7256                alloy::sol_types::sol_data::FixedBytes<32>,
7257                alloy::sol_types::sol_data::Address,
7258            );
7259            #[doc(hidden)]
7260            type UnderlyingRustTuple<'a> = (
7261                alloy::sol_types::private::FixedBytes<32>,
7262                alloy::sol_types::private::Address,
7263            );
7264            #[cfg(test)]
7265            #[allow(dead_code, unreachable_patterns)]
7266            fn _type_assertion(
7267                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7268            ) {
7269                match _t {
7270                    alloy_sol_types::private::AssertTypeEq::<
7271                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7272                    >(_) => {}
7273                }
7274            }
7275            #[automatically_derived]
7276            #[doc(hidden)]
7277            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
7278                fn from(value: revokeRoleCall) -> Self {
7279                    (value.role, value.account)
7280                }
7281            }
7282            #[automatically_derived]
7283            #[doc(hidden)]
7284            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
7285                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7286                    Self {
7287                        role: tuple.0,
7288                        account: tuple.1,
7289                    }
7290                }
7291            }
7292        }
7293        {
7294            #[doc(hidden)]
7295            #[allow(dead_code)]
7296            type UnderlyingSolTuple<'a> = ();
7297            #[doc(hidden)]
7298            type UnderlyingRustTuple<'a> = ();
7299            #[cfg(test)]
7300            #[allow(dead_code, unreachable_patterns)]
7301            fn _type_assertion(
7302                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7303            ) {
7304                match _t {
7305                    alloy_sol_types::private::AssertTypeEq::<
7306                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7307                    >(_) => {}
7308                }
7309            }
7310            #[automatically_derived]
7311            #[doc(hidden)]
7312            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
7313                fn from(value: revokeRoleReturn) -> Self {
7314                    ()
7315                }
7316            }
7317            #[automatically_derived]
7318            #[doc(hidden)]
7319            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
7320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7321                    Self {}
7322                }
7323            }
7324        }
7325        impl revokeRoleReturn {
7326            fn _tokenize(
7327                &self,
7328            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7329                ()
7330            }
7331        }
7332        #[automatically_derived]
7333        impl alloy_sol_types::SolCall for revokeRoleCall {
7334            type Parameters<'a> = (
7335                alloy::sol_types::sol_data::FixedBytes<32>,
7336                alloy::sol_types::sol_data::Address,
7337            );
7338            type Token<'a> = <Self::Parameters<
7339                'a,
7340            > as alloy_sol_types::SolType>::Token<'a>;
7341            type Return = revokeRoleReturn;
7342            type ReturnTuple<'a> = ();
7343            type ReturnToken<'a> = <Self::ReturnTuple<
7344                'a,
7345            > as alloy_sol_types::SolType>::Token<'a>;
7346            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
7347            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
7348            #[inline]
7349            fn new<'a>(
7350                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7351            ) -> Self {
7352                tuple.into()
7353            }
7354            #[inline]
7355            fn tokenize(&self) -> Self::Token<'_> {
7356                (
7357                    <alloy::sol_types::sol_data::FixedBytes<
7358                        32,
7359                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7360                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7361                        &self.account,
7362                    ),
7363                )
7364            }
7365            #[inline]
7366            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7367                revokeRoleReturn::_tokenize(ret)
7368            }
7369            #[inline]
7370            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7371                <Self::ReturnTuple<
7372                    '_,
7373                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7374                    .map(Into::into)
7375            }
7376            #[inline]
7377            fn abi_decode_returns_validate(
7378                data: &[u8],
7379            ) -> alloy_sol_types::Result<Self::Return> {
7380                <Self::ReturnTuple<
7381                    '_,
7382                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7383                    .map(Into::into)
7384            }
7385        }
7386    };
7387    #[derive(serde::Serialize, serde::Deserialize)]
7388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7389    /**Function with signature `setDailyLimit(uint256)` and selector `0xb20d30a9`.
7390```solidity
7391function setDailyLimit(uint256 basisPoints) external;
7392```*/
7393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7394    #[derive(Clone)]
7395    pub struct setDailyLimitCall {
7396        #[allow(missing_docs)]
7397        pub basisPoints: alloy::sol_types::private::primitives::aliases::U256,
7398    }
7399    ///Container type for the return parameters of the [`setDailyLimit(uint256)`](setDailyLimitCall) function.
7400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7401    #[derive(Clone)]
7402    pub struct setDailyLimitReturn {}
7403    #[allow(
7404        non_camel_case_types,
7405        non_snake_case,
7406        clippy::pub_underscore_fields,
7407        clippy::style
7408    )]
7409    const _: () = {
7410        use alloy::sol_types as alloy_sol_types;
7411        {
7412            #[doc(hidden)]
7413            #[allow(dead_code)]
7414            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7415            #[doc(hidden)]
7416            type UnderlyingRustTuple<'a> = (
7417                alloy::sol_types::private::primitives::aliases::U256,
7418            );
7419            #[cfg(test)]
7420            #[allow(dead_code, unreachable_patterns)]
7421            fn _type_assertion(
7422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7423            ) {
7424                match _t {
7425                    alloy_sol_types::private::AssertTypeEq::<
7426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7427                    >(_) => {}
7428                }
7429            }
7430            #[automatically_derived]
7431            #[doc(hidden)]
7432            impl ::core::convert::From<setDailyLimitCall> for UnderlyingRustTuple<'_> {
7433                fn from(value: setDailyLimitCall) -> Self {
7434                    (value.basisPoints,)
7435                }
7436            }
7437            #[automatically_derived]
7438            #[doc(hidden)]
7439            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setDailyLimitCall {
7440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7441                    Self { basisPoints: tuple.0 }
7442                }
7443            }
7444        }
7445        {
7446            #[doc(hidden)]
7447            #[allow(dead_code)]
7448            type UnderlyingSolTuple<'a> = ();
7449            #[doc(hidden)]
7450            type UnderlyingRustTuple<'a> = ();
7451            #[cfg(test)]
7452            #[allow(dead_code, unreachable_patterns)]
7453            fn _type_assertion(
7454                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7455            ) {
7456                match _t {
7457                    alloy_sol_types::private::AssertTypeEq::<
7458                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7459                    >(_) => {}
7460                }
7461            }
7462            #[automatically_derived]
7463            #[doc(hidden)]
7464            impl ::core::convert::From<setDailyLimitReturn> for UnderlyingRustTuple<'_> {
7465                fn from(value: setDailyLimitReturn) -> Self {
7466                    ()
7467                }
7468            }
7469            #[automatically_derived]
7470            #[doc(hidden)]
7471            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setDailyLimitReturn {
7472                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7473                    Self {}
7474                }
7475            }
7476        }
7477        impl setDailyLimitReturn {
7478            fn _tokenize(
7479                &self,
7480            ) -> <setDailyLimitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7481                ()
7482            }
7483        }
7484        #[automatically_derived]
7485        impl alloy_sol_types::SolCall for setDailyLimitCall {
7486            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7487            type Token<'a> = <Self::Parameters<
7488                'a,
7489            > as alloy_sol_types::SolType>::Token<'a>;
7490            type Return = setDailyLimitReturn;
7491            type ReturnTuple<'a> = ();
7492            type ReturnToken<'a> = <Self::ReturnTuple<
7493                'a,
7494            > as alloy_sol_types::SolType>::Token<'a>;
7495            const SIGNATURE: &'static str = "setDailyLimit(uint256)";
7496            const SELECTOR: [u8; 4] = [178u8, 13u8, 48u8, 169u8];
7497            #[inline]
7498            fn new<'a>(
7499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7500            ) -> Self {
7501                tuple.into()
7502            }
7503            #[inline]
7504            fn tokenize(&self) -> Self::Token<'_> {
7505                (
7506                    <alloy::sol_types::sol_data::Uint<
7507                        256,
7508                    > as alloy_sol_types::SolType>::tokenize(&self.basisPoints),
7509                )
7510            }
7511            #[inline]
7512            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7513                setDailyLimitReturn::_tokenize(ret)
7514            }
7515            #[inline]
7516            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7517                <Self::ReturnTuple<
7518                    '_,
7519                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7520                    .map(Into::into)
7521            }
7522            #[inline]
7523            fn abi_decode_returns_validate(
7524                data: &[u8],
7525            ) -> alloy_sol_types::Result<Self::Return> {
7526                <Self::ReturnTuple<
7527                    '_,
7528                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7529                    .map(Into::into)
7530            }
7531        }
7532    };
7533    #[derive(serde::Serialize, serde::Deserialize)]
7534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7535    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
7536```solidity
7537function supportsInterface(bytes4 interfaceId) external view returns (bool);
7538```*/
7539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7540    #[derive(Clone)]
7541    pub struct supportsInterfaceCall {
7542        #[allow(missing_docs)]
7543        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
7544    }
7545    #[derive(serde::Serialize, serde::Deserialize)]
7546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7547    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
7548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7549    #[derive(Clone)]
7550    pub struct supportsInterfaceReturn {
7551        #[allow(missing_docs)]
7552        pub _0: bool,
7553    }
7554    #[allow(
7555        non_camel_case_types,
7556        non_snake_case,
7557        clippy::pub_underscore_fields,
7558        clippy::style
7559    )]
7560    const _: () = {
7561        use alloy::sol_types as alloy_sol_types;
7562        {
7563            #[doc(hidden)]
7564            #[allow(dead_code)]
7565            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7566            #[doc(hidden)]
7567            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7568            #[cfg(test)]
7569            #[allow(dead_code, unreachable_patterns)]
7570            fn _type_assertion(
7571                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7572            ) {
7573                match _t {
7574                    alloy_sol_types::private::AssertTypeEq::<
7575                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7576                    >(_) => {}
7577                }
7578            }
7579            #[automatically_derived]
7580            #[doc(hidden)]
7581            impl ::core::convert::From<supportsInterfaceCall>
7582            for UnderlyingRustTuple<'_> {
7583                fn from(value: supportsInterfaceCall) -> Self {
7584                    (value.interfaceId,)
7585                }
7586            }
7587            #[automatically_derived]
7588            #[doc(hidden)]
7589            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7590            for supportsInterfaceCall {
7591                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7592                    Self { interfaceId: tuple.0 }
7593                }
7594            }
7595        }
7596        {
7597            #[doc(hidden)]
7598            #[allow(dead_code)]
7599            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7600            #[doc(hidden)]
7601            type UnderlyingRustTuple<'a> = (bool,);
7602            #[cfg(test)]
7603            #[allow(dead_code, unreachable_patterns)]
7604            fn _type_assertion(
7605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7606            ) {
7607                match _t {
7608                    alloy_sol_types::private::AssertTypeEq::<
7609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7610                    >(_) => {}
7611                }
7612            }
7613            #[automatically_derived]
7614            #[doc(hidden)]
7615            impl ::core::convert::From<supportsInterfaceReturn>
7616            for UnderlyingRustTuple<'_> {
7617                fn from(value: supportsInterfaceReturn) -> Self {
7618                    (value._0,)
7619                }
7620            }
7621            #[automatically_derived]
7622            #[doc(hidden)]
7623            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7624            for supportsInterfaceReturn {
7625                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7626                    Self { _0: tuple.0 }
7627                }
7628            }
7629        }
7630        #[automatically_derived]
7631        impl alloy_sol_types::SolCall for supportsInterfaceCall {
7632            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7633            type Token<'a> = <Self::Parameters<
7634                'a,
7635            > as alloy_sol_types::SolType>::Token<'a>;
7636            type Return = bool;
7637            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7638            type ReturnToken<'a> = <Self::ReturnTuple<
7639                'a,
7640            > as alloy_sol_types::SolType>::Token<'a>;
7641            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
7642            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
7643            #[inline]
7644            fn new<'a>(
7645                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7646            ) -> Self {
7647                tuple.into()
7648            }
7649            #[inline]
7650            fn tokenize(&self) -> Self::Token<'_> {
7651                (
7652                    <alloy::sol_types::sol_data::FixedBytes<
7653                        4,
7654                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
7655                )
7656            }
7657            #[inline]
7658            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7659                (
7660                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
7661                        ret,
7662                    ),
7663                )
7664            }
7665            #[inline]
7666            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7667                <Self::ReturnTuple<
7668                    '_,
7669                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7670                    .map(|r| {
7671                        let r: supportsInterfaceReturn = r.into();
7672                        r._0
7673                    })
7674            }
7675            #[inline]
7676            fn abi_decode_returns_validate(
7677                data: &[u8],
7678            ) -> alloy_sol_types::Result<Self::Return> {
7679                <Self::ReturnTuple<
7680                    '_,
7681                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7682                    .map(|r| {
7683                        let r: supportsInterfaceReturn = r.into();
7684                        r._0
7685                    })
7686            }
7687        }
7688    };
7689    #[derive(serde::Serialize, serde::Deserialize)]
7690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7691    /**Function with signature `totalClaimed()` and selector `0xd54ad2a1`.
7692```solidity
7693function totalClaimed() external view returns (uint256);
7694```*/
7695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7696    #[derive(Clone)]
7697    pub struct totalClaimedCall;
7698    #[derive(serde::Serialize, serde::Deserialize)]
7699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7700    ///Container type for the return parameters of the [`totalClaimed()`](totalClaimedCall) function.
7701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7702    #[derive(Clone)]
7703    pub struct totalClaimedReturn {
7704        #[allow(missing_docs)]
7705        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7706    }
7707    #[allow(
7708        non_camel_case_types,
7709        non_snake_case,
7710        clippy::pub_underscore_fields,
7711        clippy::style
7712    )]
7713    const _: () = {
7714        use alloy::sol_types as alloy_sol_types;
7715        {
7716            #[doc(hidden)]
7717            #[allow(dead_code)]
7718            type UnderlyingSolTuple<'a> = ();
7719            #[doc(hidden)]
7720            type UnderlyingRustTuple<'a> = ();
7721            #[cfg(test)]
7722            #[allow(dead_code, unreachable_patterns)]
7723            fn _type_assertion(
7724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7725            ) {
7726                match _t {
7727                    alloy_sol_types::private::AssertTypeEq::<
7728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7729                    >(_) => {}
7730                }
7731            }
7732            #[automatically_derived]
7733            #[doc(hidden)]
7734            impl ::core::convert::From<totalClaimedCall> for UnderlyingRustTuple<'_> {
7735                fn from(value: totalClaimedCall) -> Self {
7736                    ()
7737                }
7738            }
7739            #[automatically_derived]
7740            #[doc(hidden)]
7741            impl ::core::convert::From<UnderlyingRustTuple<'_>> for totalClaimedCall {
7742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7743                    Self
7744                }
7745            }
7746        }
7747        {
7748            #[doc(hidden)]
7749            #[allow(dead_code)]
7750            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7751            #[doc(hidden)]
7752            type UnderlyingRustTuple<'a> = (
7753                alloy::sol_types::private::primitives::aliases::U256,
7754            );
7755            #[cfg(test)]
7756            #[allow(dead_code, unreachable_patterns)]
7757            fn _type_assertion(
7758                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7759            ) {
7760                match _t {
7761                    alloy_sol_types::private::AssertTypeEq::<
7762                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7763                    >(_) => {}
7764                }
7765            }
7766            #[automatically_derived]
7767            #[doc(hidden)]
7768            impl ::core::convert::From<totalClaimedReturn> for UnderlyingRustTuple<'_> {
7769                fn from(value: totalClaimedReturn) -> Self {
7770                    (value._0,)
7771                }
7772            }
7773            #[automatically_derived]
7774            #[doc(hidden)]
7775            impl ::core::convert::From<UnderlyingRustTuple<'_>> for totalClaimedReturn {
7776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7777                    Self { _0: tuple.0 }
7778                }
7779            }
7780        }
7781        #[automatically_derived]
7782        impl alloy_sol_types::SolCall for totalClaimedCall {
7783            type Parameters<'a> = ();
7784            type Token<'a> = <Self::Parameters<
7785                'a,
7786            > as alloy_sol_types::SolType>::Token<'a>;
7787            type Return = alloy::sol_types::private::primitives::aliases::U256;
7788            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7789            type ReturnToken<'a> = <Self::ReturnTuple<
7790                'a,
7791            > as alloy_sol_types::SolType>::Token<'a>;
7792            const SIGNATURE: &'static str = "totalClaimed()";
7793            const SELECTOR: [u8; 4] = [213u8, 74u8, 210u8, 161u8];
7794            #[inline]
7795            fn new<'a>(
7796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7797            ) -> Self {
7798                tuple.into()
7799            }
7800            #[inline]
7801            fn tokenize(&self) -> Self::Token<'_> {
7802                ()
7803            }
7804            #[inline]
7805            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7806                (
7807                    <alloy::sol_types::sol_data::Uint<
7808                        256,
7809                    > as alloy_sol_types::SolType>::tokenize(ret),
7810                )
7811            }
7812            #[inline]
7813            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7814                <Self::ReturnTuple<
7815                    '_,
7816                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7817                    .map(|r| {
7818                        let r: totalClaimedReturn = r.into();
7819                        r._0
7820                    })
7821            }
7822            #[inline]
7823            fn abi_decode_returns_validate(
7824                data: &[u8],
7825            ) -> alloy_sol_types::Result<Self::Return> {
7826                <Self::ReturnTuple<
7827                    '_,
7828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7829                    .map(|r| {
7830                        let r: totalClaimedReturn = r.into();
7831                        r._0
7832                    })
7833            }
7834        }
7835    };
7836    #[derive(serde::Serialize, serde::Deserialize)]
7837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7838    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
7839```solidity
7840function unpause() external;
7841```*/
7842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7843    #[derive(Clone)]
7844    pub struct unpauseCall;
7845    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
7846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7847    #[derive(Clone)]
7848    pub struct unpauseReturn {}
7849    #[allow(
7850        non_camel_case_types,
7851        non_snake_case,
7852        clippy::pub_underscore_fields,
7853        clippy::style
7854    )]
7855    const _: () = {
7856        use alloy::sol_types as alloy_sol_types;
7857        {
7858            #[doc(hidden)]
7859            #[allow(dead_code)]
7860            type UnderlyingSolTuple<'a> = ();
7861            #[doc(hidden)]
7862            type UnderlyingRustTuple<'a> = ();
7863            #[cfg(test)]
7864            #[allow(dead_code, unreachable_patterns)]
7865            fn _type_assertion(
7866                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7867            ) {
7868                match _t {
7869                    alloy_sol_types::private::AssertTypeEq::<
7870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7871                    >(_) => {}
7872                }
7873            }
7874            #[automatically_derived]
7875            #[doc(hidden)]
7876            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
7877                fn from(value: unpauseCall) -> Self {
7878                    ()
7879                }
7880            }
7881            #[automatically_derived]
7882            #[doc(hidden)]
7883            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
7884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7885                    Self
7886                }
7887            }
7888        }
7889        {
7890            #[doc(hidden)]
7891            #[allow(dead_code)]
7892            type UnderlyingSolTuple<'a> = ();
7893            #[doc(hidden)]
7894            type UnderlyingRustTuple<'a> = ();
7895            #[cfg(test)]
7896            #[allow(dead_code, unreachable_patterns)]
7897            fn _type_assertion(
7898                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7899            ) {
7900                match _t {
7901                    alloy_sol_types::private::AssertTypeEq::<
7902                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7903                    >(_) => {}
7904                }
7905            }
7906            #[automatically_derived]
7907            #[doc(hidden)]
7908            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
7909                fn from(value: unpauseReturn) -> Self {
7910                    ()
7911                }
7912            }
7913            #[automatically_derived]
7914            #[doc(hidden)]
7915            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
7916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7917                    Self {}
7918                }
7919            }
7920        }
7921        impl unpauseReturn {
7922            fn _tokenize(
7923                &self,
7924            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7925                ()
7926            }
7927        }
7928        #[automatically_derived]
7929        impl alloy_sol_types::SolCall for unpauseCall {
7930            type Parameters<'a> = ();
7931            type Token<'a> = <Self::Parameters<
7932                'a,
7933            > as alloy_sol_types::SolType>::Token<'a>;
7934            type Return = unpauseReturn;
7935            type ReturnTuple<'a> = ();
7936            type ReturnToken<'a> = <Self::ReturnTuple<
7937                'a,
7938            > as alloy_sol_types::SolType>::Token<'a>;
7939            const SIGNATURE: &'static str = "unpause()";
7940            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
7941            #[inline]
7942            fn new<'a>(
7943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7944            ) -> Self {
7945                tuple.into()
7946            }
7947            #[inline]
7948            fn tokenize(&self) -> Self::Token<'_> {
7949                ()
7950            }
7951            #[inline]
7952            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7953                unpauseReturn::_tokenize(ret)
7954            }
7955            #[inline]
7956            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7957                <Self::ReturnTuple<
7958                    '_,
7959                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7960                    .map(Into::into)
7961            }
7962            #[inline]
7963            fn abi_decode_returns_validate(
7964                data: &[u8],
7965            ) -> alloy_sol_types::Result<Self::Return> {
7966                <Self::ReturnTuple<
7967                    '_,
7968                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7969                    .map(Into::into)
7970            }
7971        }
7972    };
7973    #[derive(serde::Serialize, serde::Deserialize)]
7974    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7975    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
7976```solidity
7977function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
7978```*/
7979    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7980    #[derive(Clone)]
7981    pub struct upgradeToAndCallCall {
7982        #[allow(missing_docs)]
7983        pub newImplementation: alloy::sol_types::private::Address,
7984        #[allow(missing_docs)]
7985        pub data: alloy::sol_types::private::Bytes,
7986    }
7987    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
7988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7989    #[derive(Clone)]
7990    pub struct upgradeToAndCallReturn {}
7991    #[allow(
7992        non_camel_case_types,
7993        non_snake_case,
7994        clippy::pub_underscore_fields,
7995        clippy::style
7996    )]
7997    const _: () = {
7998        use alloy::sol_types as alloy_sol_types;
7999        {
8000            #[doc(hidden)]
8001            #[allow(dead_code)]
8002            type UnderlyingSolTuple<'a> = (
8003                alloy::sol_types::sol_data::Address,
8004                alloy::sol_types::sol_data::Bytes,
8005            );
8006            #[doc(hidden)]
8007            type UnderlyingRustTuple<'a> = (
8008                alloy::sol_types::private::Address,
8009                alloy::sol_types::private::Bytes,
8010            );
8011            #[cfg(test)]
8012            #[allow(dead_code, unreachable_patterns)]
8013            fn _type_assertion(
8014                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8015            ) {
8016                match _t {
8017                    alloy_sol_types::private::AssertTypeEq::<
8018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8019                    >(_) => {}
8020                }
8021            }
8022            #[automatically_derived]
8023            #[doc(hidden)]
8024            impl ::core::convert::From<upgradeToAndCallCall>
8025            for UnderlyingRustTuple<'_> {
8026                fn from(value: upgradeToAndCallCall) -> Self {
8027                    (value.newImplementation, value.data)
8028                }
8029            }
8030            #[automatically_derived]
8031            #[doc(hidden)]
8032            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8033            for upgradeToAndCallCall {
8034                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8035                    Self {
8036                        newImplementation: tuple.0,
8037                        data: tuple.1,
8038                    }
8039                }
8040            }
8041        }
8042        {
8043            #[doc(hidden)]
8044            #[allow(dead_code)]
8045            type UnderlyingSolTuple<'a> = ();
8046            #[doc(hidden)]
8047            type UnderlyingRustTuple<'a> = ();
8048            #[cfg(test)]
8049            #[allow(dead_code, unreachable_patterns)]
8050            fn _type_assertion(
8051                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8052            ) {
8053                match _t {
8054                    alloy_sol_types::private::AssertTypeEq::<
8055                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8056                    >(_) => {}
8057                }
8058            }
8059            #[automatically_derived]
8060            #[doc(hidden)]
8061            impl ::core::convert::From<upgradeToAndCallReturn>
8062            for UnderlyingRustTuple<'_> {
8063                fn from(value: upgradeToAndCallReturn) -> Self {
8064                    ()
8065                }
8066            }
8067            #[automatically_derived]
8068            #[doc(hidden)]
8069            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8070            for upgradeToAndCallReturn {
8071                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8072                    Self {}
8073                }
8074            }
8075        }
8076        impl upgradeToAndCallReturn {
8077            fn _tokenize(
8078                &self,
8079            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8080                ()
8081            }
8082        }
8083        #[automatically_derived]
8084        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
8085            type Parameters<'a> = (
8086                alloy::sol_types::sol_data::Address,
8087                alloy::sol_types::sol_data::Bytes,
8088            );
8089            type Token<'a> = <Self::Parameters<
8090                'a,
8091            > as alloy_sol_types::SolType>::Token<'a>;
8092            type Return = upgradeToAndCallReturn;
8093            type ReturnTuple<'a> = ();
8094            type ReturnToken<'a> = <Self::ReturnTuple<
8095                'a,
8096            > as alloy_sol_types::SolType>::Token<'a>;
8097            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
8098            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
8099            #[inline]
8100            fn new<'a>(
8101                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8102            ) -> Self {
8103                tuple.into()
8104            }
8105            #[inline]
8106            fn tokenize(&self) -> Self::Token<'_> {
8107                (
8108                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8109                        &self.newImplementation,
8110                    ),
8111                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8112                        &self.data,
8113                    ),
8114                )
8115            }
8116            #[inline]
8117            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8118                upgradeToAndCallReturn::_tokenize(ret)
8119            }
8120            #[inline]
8121            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8122                <Self::ReturnTuple<
8123                    '_,
8124                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8125                    .map(Into::into)
8126            }
8127            #[inline]
8128            fn abi_decode_returns_validate(
8129                data: &[u8],
8130            ) -> alloy_sol_types::Result<Self::Return> {
8131                <Self::ReturnTuple<
8132                    '_,
8133                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8134                    .map(Into::into)
8135            }
8136        }
8137    };
8138    ///Container for all the [`RewardClaim`](self) function calls.
8139    #[derive(Clone)]
8140    #[derive(serde::Serialize, serde::Deserialize)]
8141    #[derive()]
8142    pub enum RewardClaimCalls {
8143        #[allow(missing_docs)]
8144        BPS_DENOMINATOR(BPS_DENOMINATORCall),
8145        #[allow(missing_docs)]
8146        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
8147        #[allow(missing_docs)]
8148        MAX_DAILY_LIMIT_BASIS_POINTS(MAX_DAILY_LIMIT_BASIS_POINTSCall),
8149        #[allow(missing_docs)]
8150        PAUSER_ROLE(PAUSER_ROLECall),
8151        #[allow(missing_docs)]
8152        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
8153        #[allow(missing_docs)]
8154        claimRewards(claimRewardsCall),
8155        #[allow(missing_docs)]
8156        claimedRewards(claimedRewardsCall),
8157        #[allow(missing_docs)]
8158        currentAdmin(currentAdminCall),
8159        #[allow(missing_docs)]
8160        dailyLimitWei(dailyLimitWeiCall),
8161        #[allow(missing_docs)]
8162        espToken(espTokenCall),
8163        #[allow(missing_docs)]
8164        getRoleAdmin(getRoleAdminCall),
8165        #[allow(missing_docs)]
8166        getVersion(getVersionCall),
8167        #[allow(missing_docs)]
8168        grantRole(grantRoleCall),
8169        #[allow(missing_docs)]
8170        hasRole(hasRoleCall),
8171        #[allow(missing_docs)]
8172        initialize(initializeCall),
8173        #[allow(missing_docs)]
8174        lastSetDailyLimitBasisPoints(lastSetDailyLimitBasisPointsCall),
8175        #[allow(missing_docs)]
8176        lightClient(lightClientCall),
8177        #[allow(missing_docs)]
8178        pause(pauseCall),
8179        #[allow(missing_docs)]
8180        paused(pausedCall),
8181        #[allow(missing_docs)]
8182        proxiableUUID(proxiableUUIDCall),
8183        #[allow(missing_docs)]
8184        renounceRole(renounceRoleCall),
8185        #[allow(missing_docs)]
8186        revokeRole(revokeRoleCall),
8187        #[allow(missing_docs)]
8188        setDailyLimit(setDailyLimitCall),
8189        #[allow(missing_docs)]
8190        supportsInterface(supportsInterfaceCall),
8191        #[allow(missing_docs)]
8192        totalClaimed(totalClaimedCall),
8193        #[allow(missing_docs)]
8194        unpause(unpauseCall),
8195        #[allow(missing_docs)]
8196        upgradeToAndCall(upgradeToAndCallCall),
8197    }
8198    impl RewardClaimCalls {
8199        /// All the selectors of this enum.
8200        ///
8201        /// Note that the selectors might not be in the same order as the variants.
8202        /// No guarantees are made about the order of the selectors.
8203        ///
8204        /// Prefer using `SolInterface` methods instead.
8205        pub const SELECTORS: &'static [[u8; 4usize]] = &[
8206            [1u8, 255u8, 201u8, 167u8],
8207            [13u8, 142u8, 110u8, 44u8],
8208            [15u8, 108u8, 161u8, 214u8],
8209            [36u8, 138u8, 156u8, 163u8],
8210            [44u8, 202u8, 116u8, 216u8],
8211            [47u8, 47u8, 241u8, 93u8],
8212            [54u8, 86u8, 138u8, 190u8],
8213            [63u8, 75u8, 168u8, 58u8],
8214            [79u8, 30u8, 242u8, 134u8],
8215            [82u8, 209u8, 144u8, 45u8],
8216            [84u8, 157u8, 216u8, 195u8],
8217            [92u8, 151u8, 90u8, 187u8],
8218            [132u8, 86u8, 203u8, 89u8],
8219            [145u8, 209u8, 72u8, 84u8],
8220            [162u8, 23u8, 253u8, 223u8],
8221            [173u8, 60u8, 177u8, 204u8],
8222            [178u8, 13u8, 48u8, 169u8],
8223            [181u8, 112u8, 14u8, 104u8],
8224            [186u8, 75u8, 205u8, 114u8],
8225            [189u8, 131u8, 67u8, 69u8],
8226            [207u8, 33u8, 57u8, 91u8],
8227            [213u8, 71u8, 116u8, 31u8],
8228            [213u8, 74u8, 210u8, 161u8],
8229            [225u8, 164u8, 82u8, 24u8],
8230            [230u8, 58u8, 177u8, 233u8],
8231            [240u8, 146u8, 225u8, 58u8],
8232            [248u8, 200u8, 118u8, 94u8],
8233        ];
8234        /// The names of the variants in the same order as `SELECTORS`.
8235        pub const VARIANT_NAMES: &'static [&'static str] = &[
8236            ::core::stringify!(supportsInterface),
8237            ::core::stringify!(getVersion),
8238            ::core::stringify!(lastSetDailyLimitBasisPoints),
8239            ::core::stringify!(getRoleAdmin),
8240            ::core::stringify!(dailyLimitWei),
8241            ::core::stringify!(grantRole),
8242            ::core::stringify!(renounceRole),
8243            ::core::stringify!(unpause),
8244            ::core::stringify!(upgradeToAndCall),
8245            ::core::stringify!(proxiableUUID),
8246            ::core::stringify!(claimRewards),
8247            ::core::stringify!(paused),
8248            ::core::stringify!(pause),
8249            ::core::stringify!(hasRole),
8250            ::core::stringify!(DEFAULT_ADMIN_ROLE),
8251            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
8252            ::core::stringify!(setDailyLimit),
8253            ::core::stringify!(lightClient),
8254            ::core::stringify!(currentAdmin),
8255            ::core::stringify!(claimedRewards),
8256            ::core::stringify!(MAX_DAILY_LIMIT_BASIS_POINTS),
8257            ::core::stringify!(revokeRole),
8258            ::core::stringify!(totalClaimed),
8259            ::core::stringify!(BPS_DENOMINATOR),
8260            ::core::stringify!(PAUSER_ROLE),
8261            ::core::stringify!(espToken),
8262            ::core::stringify!(initialize),
8263        ];
8264        /// The signatures in the same order as `SELECTORS`.
8265        pub const SIGNATURES: &'static [&'static str] = &[
8266            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
8267            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
8268            <lastSetDailyLimitBasisPointsCall as alloy_sol_types::SolCall>::SIGNATURE,
8269            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
8270            <dailyLimitWeiCall as alloy_sol_types::SolCall>::SIGNATURE,
8271            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8272            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8273            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
8274            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
8275            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
8276            <claimRewardsCall as alloy_sol_types::SolCall>::SIGNATURE,
8277            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
8278            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
8279            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8280            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8281            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
8282            <setDailyLimitCall as alloy_sol_types::SolCall>::SIGNATURE,
8283            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
8284            <currentAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
8285            <claimedRewardsCall as alloy_sol_types::SolCall>::SIGNATURE,
8286            <MAX_DAILY_LIMIT_BASIS_POINTSCall as alloy_sol_types::SolCall>::SIGNATURE,
8287            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8288            <totalClaimedCall as alloy_sol_types::SolCall>::SIGNATURE,
8289            <BPS_DENOMINATORCall as alloy_sol_types::SolCall>::SIGNATURE,
8290            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8291            <espTokenCall as alloy_sol_types::SolCall>::SIGNATURE,
8292            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
8293        ];
8294        /// Returns the signature for the given selector, if known.
8295        #[inline]
8296        pub fn signature_by_selector(
8297            selector: [u8; 4usize],
8298        ) -> ::core::option::Option<&'static str> {
8299            match Self::SELECTORS.binary_search(&selector) {
8300                ::core::result::Result::Ok(idx) => {
8301                    ::core::option::Option::Some(Self::SIGNATURES[idx])
8302                }
8303                ::core::result::Result::Err(_) => ::core::option::Option::None,
8304            }
8305        }
8306        /// Returns the enum variant name for the given selector, if known.
8307        #[inline]
8308        pub fn name_by_selector(
8309            selector: [u8; 4usize],
8310        ) -> ::core::option::Option<&'static str> {
8311            let sig = Self::signature_by_selector(selector)?;
8312            sig.split_once('(').map(|(name, _)| name)
8313        }
8314    }
8315    #[automatically_derived]
8316    impl alloy_sol_types::SolInterface for RewardClaimCalls {
8317        const NAME: &'static str = "RewardClaimCalls";
8318        const MIN_DATA_LENGTH: usize = 0usize;
8319        const COUNT: usize = 27usize;
8320        #[inline]
8321        fn selector(&self) -> [u8; 4] {
8322            match self {
8323                Self::BPS_DENOMINATOR(_) => {
8324                    <BPS_DENOMINATORCall as alloy_sol_types::SolCall>::SELECTOR
8325                }
8326                Self::DEFAULT_ADMIN_ROLE(_) => {
8327                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8328                }
8329                Self::MAX_DAILY_LIMIT_BASIS_POINTS(_) => {
8330                    <MAX_DAILY_LIMIT_BASIS_POINTSCall as alloy_sol_types::SolCall>::SELECTOR
8331                }
8332                Self::PAUSER_ROLE(_) => {
8333                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8334                }
8335                Self::UPGRADE_INTERFACE_VERSION(_) => {
8336                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
8337                }
8338                Self::claimRewards(_) => {
8339                    <claimRewardsCall as alloy_sol_types::SolCall>::SELECTOR
8340                }
8341                Self::claimedRewards(_) => {
8342                    <claimedRewardsCall as alloy_sol_types::SolCall>::SELECTOR
8343                }
8344                Self::currentAdmin(_) => {
8345                    <currentAdminCall as alloy_sol_types::SolCall>::SELECTOR
8346                }
8347                Self::dailyLimitWei(_) => {
8348                    <dailyLimitWeiCall as alloy_sol_types::SolCall>::SELECTOR
8349                }
8350                Self::espToken(_) => <espTokenCall as alloy_sol_types::SolCall>::SELECTOR,
8351                Self::getRoleAdmin(_) => {
8352                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
8353                }
8354                Self::getVersion(_) => {
8355                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
8356                }
8357                Self::grantRole(_) => {
8358                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
8359                }
8360                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
8361                Self::initialize(_) => {
8362                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
8363                }
8364                Self::lastSetDailyLimitBasisPoints(_) => {
8365                    <lastSetDailyLimitBasisPointsCall as alloy_sol_types::SolCall>::SELECTOR
8366                }
8367                Self::lightClient(_) => {
8368                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
8369                }
8370                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
8371                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
8372                Self::proxiableUUID(_) => {
8373                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
8374                }
8375                Self::renounceRole(_) => {
8376                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
8377                }
8378                Self::revokeRole(_) => {
8379                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
8380                }
8381                Self::setDailyLimit(_) => {
8382                    <setDailyLimitCall as alloy_sol_types::SolCall>::SELECTOR
8383                }
8384                Self::supportsInterface(_) => {
8385                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
8386                }
8387                Self::totalClaimed(_) => {
8388                    <totalClaimedCall as alloy_sol_types::SolCall>::SELECTOR
8389                }
8390                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
8391                Self::upgradeToAndCall(_) => {
8392                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
8393                }
8394            }
8395        }
8396        #[inline]
8397        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8398            Self::SELECTORS.get(i).copied()
8399        }
8400        #[inline]
8401        fn valid_selector(selector: [u8; 4]) -> bool {
8402            Self::SELECTORS.binary_search(&selector).is_ok()
8403        }
8404        #[inline]
8405        #[allow(non_snake_case)]
8406        fn abi_decode_raw(
8407            selector: [u8; 4],
8408            data: &[u8],
8409        ) -> alloy_sol_types::Result<Self> {
8410            static DECODE_SHIMS: &[fn(
8411                &[u8],
8412            ) -> alloy_sol_types::Result<RewardClaimCalls>] = &[
8413                {
8414                    fn supportsInterface(
8415                        data: &[u8],
8416                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8417                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
8418                                data,
8419                            )
8420                            .map(RewardClaimCalls::supportsInterface)
8421                    }
8422                    supportsInterface
8423                },
8424                {
8425                    fn getVersion(
8426                        data: &[u8],
8427                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8428                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
8429                                data,
8430                            )
8431                            .map(RewardClaimCalls::getVersion)
8432                    }
8433                    getVersion
8434                },
8435                {
8436                    fn lastSetDailyLimitBasisPoints(
8437                        data: &[u8],
8438                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8439                        <lastSetDailyLimitBasisPointsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8440                                data,
8441                            )
8442                            .map(RewardClaimCalls::lastSetDailyLimitBasisPoints)
8443                    }
8444                    lastSetDailyLimitBasisPoints
8445                },
8446                {
8447                    fn getRoleAdmin(
8448                        data: &[u8],
8449                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8450                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
8451                                data,
8452                            )
8453                            .map(RewardClaimCalls::getRoleAdmin)
8454                    }
8455                    getRoleAdmin
8456                },
8457                {
8458                    fn dailyLimitWei(
8459                        data: &[u8],
8460                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8461                        <dailyLimitWeiCall as alloy_sol_types::SolCall>::abi_decode_raw(
8462                                data,
8463                            )
8464                            .map(RewardClaimCalls::dailyLimitWei)
8465                    }
8466                    dailyLimitWei
8467                },
8468                {
8469                    fn grantRole(
8470                        data: &[u8],
8471                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8472                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8473                            .map(RewardClaimCalls::grantRole)
8474                    }
8475                    grantRole
8476                },
8477                {
8478                    fn renounceRole(
8479                        data: &[u8],
8480                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8481                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8482                                data,
8483                            )
8484                            .map(RewardClaimCalls::renounceRole)
8485                    }
8486                    renounceRole
8487                },
8488                {
8489                    fn unpause(
8490                        data: &[u8],
8491                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8492                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8493                            .map(RewardClaimCalls::unpause)
8494                    }
8495                    unpause
8496                },
8497                {
8498                    fn upgradeToAndCall(
8499                        data: &[u8],
8500                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8501                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
8502                                data,
8503                            )
8504                            .map(RewardClaimCalls::upgradeToAndCall)
8505                    }
8506                    upgradeToAndCall
8507                },
8508                {
8509                    fn proxiableUUID(
8510                        data: &[u8],
8511                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8512                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
8513                                data,
8514                            )
8515                            .map(RewardClaimCalls::proxiableUUID)
8516                    }
8517                    proxiableUUID
8518                },
8519                {
8520                    fn claimRewards(
8521                        data: &[u8],
8522                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8523                        <claimRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8524                                data,
8525                            )
8526                            .map(RewardClaimCalls::claimRewards)
8527                    }
8528                    claimRewards
8529                },
8530                {
8531                    fn paused(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8532                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8533                            .map(RewardClaimCalls::paused)
8534                    }
8535                    paused
8536                },
8537                {
8538                    fn pause(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8539                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8540                            .map(RewardClaimCalls::pause)
8541                    }
8542                    pause
8543                },
8544                {
8545                    fn hasRole(
8546                        data: &[u8],
8547                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8548                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8549                            .map(RewardClaimCalls::hasRole)
8550                    }
8551                    hasRole
8552                },
8553                {
8554                    fn DEFAULT_ADMIN_ROLE(
8555                        data: &[u8],
8556                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8557                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8558                                data,
8559                            )
8560                            .map(RewardClaimCalls::DEFAULT_ADMIN_ROLE)
8561                    }
8562                    DEFAULT_ADMIN_ROLE
8563                },
8564                {
8565                    fn UPGRADE_INTERFACE_VERSION(
8566                        data: &[u8],
8567                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8568                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
8569                                data,
8570                            )
8571                            .map(RewardClaimCalls::UPGRADE_INTERFACE_VERSION)
8572                    }
8573                    UPGRADE_INTERFACE_VERSION
8574                },
8575                {
8576                    fn setDailyLimit(
8577                        data: &[u8],
8578                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8579                        <setDailyLimitCall as alloy_sol_types::SolCall>::abi_decode_raw(
8580                                data,
8581                            )
8582                            .map(RewardClaimCalls::setDailyLimit)
8583                    }
8584                    setDailyLimit
8585                },
8586                {
8587                    fn lightClient(
8588                        data: &[u8],
8589                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8590                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
8591                                data,
8592                            )
8593                            .map(RewardClaimCalls::lightClient)
8594                    }
8595                    lightClient
8596                },
8597                {
8598                    fn currentAdmin(
8599                        data: &[u8],
8600                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8601                        <currentAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
8602                                data,
8603                            )
8604                            .map(RewardClaimCalls::currentAdmin)
8605                    }
8606                    currentAdmin
8607                },
8608                {
8609                    fn claimedRewards(
8610                        data: &[u8],
8611                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8612                        <claimedRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8613                                data,
8614                            )
8615                            .map(RewardClaimCalls::claimedRewards)
8616                    }
8617                    claimedRewards
8618                },
8619                {
8620                    fn MAX_DAILY_LIMIT_BASIS_POINTS(
8621                        data: &[u8],
8622                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8623                        <MAX_DAILY_LIMIT_BASIS_POINTSCall as alloy_sol_types::SolCall>::abi_decode_raw(
8624                                data,
8625                            )
8626                            .map(RewardClaimCalls::MAX_DAILY_LIMIT_BASIS_POINTS)
8627                    }
8628                    MAX_DAILY_LIMIT_BASIS_POINTS
8629                },
8630                {
8631                    fn revokeRole(
8632                        data: &[u8],
8633                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8634                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8635                                data,
8636                            )
8637                            .map(RewardClaimCalls::revokeRole)
8638                    }
8639                    revokeRole
8640                },
8641                {
8642                    fn totalClaimed(
8643                        data: &[u8],
8644                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8645                        <totalClaimedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8646                                data,
8647                            )
8648                            .map(RewardClaimCalls::totalClaimed)
8649                    }
8650                    totalClaimed
8651                },
8652                {
8653                    fn BPS_DENOMINATOR(
8654                        data: &[u8],
8655                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8656                        <BPS_DENOMINATORCall as alloy_sol_types::SolCall>::abi_decode_raw(
8657                                data,
8658                            )
8659                            .map(RewardClaimCalls::BPS_DENOMINATOR)
8660                    }
8661                    BPS_DENOMINATOR
8662                },
8663                {
8664                    fn PAUSER_ROLE(
8665                        data: &[u8],
8666                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8667                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8668                                data,
8669                            )
8670                            .map(RewardClaimCalls::PAUSER_ROLE)
8671                    }
8672                    PAUSER_ROLE
8673                },
8674                {
8675                    fn espToken(
8676                        data: &[u8],
8677                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8678                        <espTokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8679                            .map(RewardClaimCalls::espToken)
8680                    }
8681                    espToken
8682                },
8683                {
8684                    fn initialize(
8685                        data: &[u8],
8686                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8687                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
8688                                data,
8689                            )
8690                            .map(RewardClaimCalls::initialize)
8691                    }
8692                    initialize
8693                },
8694            ];
8695            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8696                return Err(
8697                    alloy_sol_types::Error::unknown_selector(
8698                        <Self as alloy_sol_types::SolInterface>::NAME,
8699                        selector,
8700                    ),
8701                );
8702            };
8703            DECODE_SHIMS[idx](data)
8704        }
8705        #[inline]
8706        #[allow(non_snake_case)]
8707        fn abi_decode_raw_validate(
8708            selector: [u8; 4],
8709            data: &[u8],
8710        ) -> alloy_sol_types::Result<Self> {
8711            static DECODE_VALIDATE_SHIMS: &[fn(
8712                &[u8],
8713            ) -> alloy_sol_types::Result<RewardClaimCalls>] = &[
8714                {
8715                    fn supportsInterface(
8716                        data: &[u8],
8717                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8718                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8719                                data,
8720                            )
8721                            .map(RewardClaimCalls::supportsInterface)
8722                    }
8723                    supportsInterface
8724                },
8725                {
8726                    fn getVersion(
8727                        data: &[u8],
8728                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8729                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8730                                data,
8731                            )
8732                            .map(RewardClaimCalls::getVersion)
8733                    }
8734                    getVersion
8735                },
8736                {
8737                    fn lastSetDailyLimitBasisPoints(
8738                        data: &[u8],
8739                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8740                        <lastSetDailyLimitBasisPointsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8741                                data,
8742                            )
8743                            .map(RewardClaimCalls::lastSetDailyLimitBasisPoints)
8744                    }
8745                    lastSetDailyLimitBasisPoints
8746                },
8747                {
8748                    fn getRoleAdmin(
8749                        data: &[u8],
8750                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8751                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8752                                data,
8753                            )
8754                            .map(RewardClaimCalls::getRoleAdmin)
8755                    }
8756                    getRoleAdmin
8757                },
8758                {
8759                    fn dailyLimitWei(
8760                        data: &[u8],
8761                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8762                        <dailyLimitWeiCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8763                                data,
8764                            )
8765                            .map(RewardClaimCalls::dailyLimitWei)
8766                    }
8767                    dailyLimitWei
8768                },
8769                {
8770                    fn grantRole(
8771                        data: &[u8],
8772                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8773                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8774                                data,
8775                            )
8776                            .map(RewardClaimCalls::grantRole)
8777                    }
8778                    grantRole
8779                },
8780                {
8781                    fn renounceRole(
8782                        data: &[u8],
8783                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8784                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8785                                data,
8786                            )
8787                            .map(RewardClaimCalls::renounceRole)
8788                    }
8789                    renounceRole
8790                },
8791                {
8792                    fn unpause(
8793                        data: &[u8],
8794                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8795                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8796                                data,
8797                            )
8798                            .map(RewardClaimCalls::unpause)
8799                    }
8800                    unpause
8801                },
8802                {
8803                    fn upgradeToAndCall(
8804                        data: &[u8],
8805                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8806                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8807                                data,
8808                            )
8809                            .map(RewardClaimCalls::upgradeToAndCall)
8810                    }
8811                    upgradeToAndCall
8812                },
8813                {
8814                    fn proxiableUUID(
8815                        data: &[u8],
8816                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8817                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8818                                data,
8819                            )
8820                            .map(RewardClaimCalls::proxiableUUID)
8821                    }
8822                    proxiableUUID
8823                },
8824                {
8825                    fn claimRewards(
8826                        data: &[u8],
8827                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8828                        <claimRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8829                                data,
8830                            )
8831                            .map(RewardClaimCalls::claimRewards)
8832                    }
8833                    claimRewards
8834                },
8835                {
8836                    fn paused(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8837                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8838                                data,
8839                            )
8840                            .map(RewardClaimCalls::paused)
8841                    }
8842                    paused
8843                },
8844                {
8845                    fn pause(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8846                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8847                                data,
8848                            )
8849                            .map(RewardClaimCalls::pause)
8850                    }
8851                    pause
8852                },
8853                {
8854                    fn hasRole(
8855                        data: &[u8],
8856                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8857                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8858                                data,
8859                            )
8860                            .map(RewardClaimCalls::hasRole)
8861                    }
8862                    hasRole
8863                },
8864                {
8865                    fn DEFAULT_ADMIN_ROLE(
8866                        data: &[u8],
8867                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8868                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8869                                data,
8870                            )
8871                            .map(RewardClaimCalls::DEFAULT_ADMIN_ROLE)
8872                    }
8873                    DEFAULT_ADMIN_ROLE
8874                },
8875                {
8876                    fn UPGRADE_INTERFACE_VERSION(
8877                        data: &[u8],
8878                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8879                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8880                                data,
8881                            )
8882                            .map(RewardClaimCalls::UPGRADE_INTERFACE_VERSION)
8883                    }
8884                    UPGRADE_INTERFACE_VERSION
8885                },
8886                {
8887                    fn setDailyLimit(
8888                        data: &[u8],
8889                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8890                        <setDailyLimitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8891                                data,
8892                            )
8893                            .map(RewardClaimCalls::setDailyLimit)
8894                    }
8895                    setDailyLimit
8896                },
8897                {
8898                    fn lightClient(
8899                        data: &[u8],
8900                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8901                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8902                                data,
8903                            )
8904                            .map(RewardClaimCalls::lightClient)
8905                    }
8906                    lightClient
8907                },
8908                {
8909                    fn currentAdmin(
8910                        data: &[u8],
8911                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8912                        <currentAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8913                                data,
8914                            )
8915                            .map(RewardClaimCalls::currentAdmin)
8916                    }
8917                    currentAdmin
8918                },
8919                {
8920                    fn claimedRewards(
8921                        data: &[u8],
8922                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8923                        <claimedRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8924                                data,
8925                            )
8926                            .map(RewardClaimCalls::claimedRewards)
8927                    }
8928                    claimedRewards
8929                },
8930                {
8931                    fn MAX_DAILY_LIMIT_BASIS_POINTS(
8932                        data: &[u8],
8933                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8934                        <MAX_DAILY_LIMIT_BASIS_POINTSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8935                                data,
8936                            )
8937                            .map(RewardClaimCalls::MAX_DAILY_LIMIT_BASIS_POINTS)
8938                    }
8939                    MAX_DAILY_LIMIT_BASIS_POINTS
8940                },
8941                {
8942                    fn revokeRole(
8943                        data: &[u8],
8944                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8945                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8946                                data,
8947                            )
8948                            .map(RewardClaimCalls::revokeRole)
8949                    }
8950                    revokeRole
8951                },
8952                {
8953                    fn totalClaimed(
8954                        data: &[u8],
8955                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8956                        <totalClaimedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8957                                data,
8958                            )
8959                            .map(RewardClaimCalls::totalClaimed)
8960                    }
8961                    totalClaimed
8962                },
8963                {
8964                    fn BPS_DENOMINATOR(
8965                        data: &[u8],
8966                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8967                        <BPS_DENOMINATORCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8968                                data,
8969                            )
8970                            .map(RewardClaimCalls::BPS_DENOMINATOR)
8971                    }
8972                    BPS_DENOMINATOR
8973                },
8974                {
8975                    fn PAUSER_ROLE(
8976                        data: &[u8],
8977                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8978                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8979                                data,
8980                            )
8981                            .map(RewardClaimCalls::PAUSER_ROLE)
8982                    }
8983                    PAUSER_ROLE
8984                },
8985                {
8986                    fn espToken(
8987                        data: &[u8],
8988                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8989                        <espTokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8990                                data,
8991                            )
8992                            .map(RewardClaimCalls::espToken)
8993                    }
8994                    espToken
8995                },
8996                {
8997                    fn initialize(
8998                        data: &[u8],
8999                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
9000                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
9001                                data,
9002                            )
9003                            .map(RewardClaimCalls::initialize)
9004                    }
9005                    initialize
9006                },
9007            ];
9008            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9009                return Err(
9010                    alloy_sol_types::Error::unknown_selector(
9011                        <Self as alloy_sol_types::SolInterface>::NAME,
9012                        selector,
9013                    ),
9014                );
9015            };
9016            DECODE_VALIDATE_SHIMS[idx](data)
9017        }
9018        #[inline]
9019        fn abi_encoded_size(&self) -> usize {
9020            match self {
9021                Self::BPS_DENOMINATOR(inner) => {
9022                    <BPS_DENOMINATORCall as alloy_sol_types::SolCall>::abi_encoded_size(
9023                        inner,
9024                    )
9025                }
9026                Self::DEFAULT_ADMIN_ROLE(inner) => {
9027                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
9028                        inner,
9029                    )
9030                }
9031                Self::MAX_DAILY_LIMIT_BASIS_POINTS(inner) => {
9032                    <MAX_DAILY_LIMIT_BASIS_POINTSCall as alloy_sol_types::SolCall>::abi_encoded_size(
9033                        inner,
9034                    )
9035                }
9036                Self::PAUSER_ROLE(inner) => {
9037                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
9038                        inner,
9039                    )
9040                }
9041                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9042                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
9043                        inner,
9044                    )
9045                }
9046                Self::claimRewards(inner) => {
9047                    <claimRewardsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9048                        inner,
9049                    )
9050                }
9051                Self::claimedRewards(inner) => {
9052                    <claimedRewardsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9053                        inner,
9054                    )
9055                }
9056                Self::currentAdmin(inner) => {
9057                    <currentAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
9058                        inner,
9059                    )
9060                }
9061                Self::dailyLimitWei(inner) => {
9062                    <dailyLimitWeiCall as alloy_sol_types::SolCall>::abi_encoded_size(
9063                        inner,
9064                    )
9065                }
9066                Self::espToken(inner) => {
9067                    <espTokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9068                }
9069                Self::getRoleAdmin(inner) => {
9070                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
9071                        inner,
9072                    )
9073                }
9074                Self::getVersion(inner) => {
9075                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9076                }
9077                Self::grantRole(inner) => {
9078                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9079                }
9080                Self::hasRole(inner) => {
9081                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9082                }
9083                Self::initialize(inner) => {
9084                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9085                }
9086                Self::lastSetDailyLimitBasisPoints(inner) => {
9087                    <lastSetDailyLimitBasisPointsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9088                        inner,
9089                    )
9090                }
9091                Self::lightClient(inner) => {
9092                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
9093                        inner,
9094                    )
9095                }
9096                Self::pause(inner) => {
9097                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9098                }
9099                Self::paused(inner) => {
9100                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9101                }
9102                Self::proxiableUUID(inner) => {
9103                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
9104                        inner,
9105                    )
9106                }
9107                Self::renounceRole(inner) => {
9108                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
9109                        inner,
9110                    )
9111                }
9112                Self::revokeRole(inner) => {
9113                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9114                }
9115                Self::setDailyLimit(inner) => {
9116                    <setDailyLimitCall as alloy_sol_types::SolCall>::abi_encoded_size(
9117                        inner,
9118                    )
9119                }
9120                Self::supportsInterface(inner) => {
9121                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
9122                        inner,
9123                    )
9124                }
9125                Self::totalClaimed(inner) => {
9126                    <totalClaimedCall as alloy_sol_types::SolCall>::abi_encoded_size(
9127                        inner,
9128                    )
9129                }
9130                Self::unpause(inner) => {
9131                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9132                }
9133                Self::upgradeToAndCall(inner) => {
9134                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
9135                        inner,
9136                    )
9137                }
9138            }
9139        }
9140        #[inline]
9141        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9142            match self {
9143                Self::BPS_DENOMINATOR(inner) => {
9144                    <BPS_DENOMINATORCall as alloy_sol_types::SolCall>::abi_encode_raw(
9145                        inner,
9146                        out,
9147                    )
9148                }
9149                Self::DEFAULT_ADMIN_ROLE(inner) => {
9150                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9151                        inner,
9152                        out,
9153                    )
9154                }
9155                Self::MAX_DAILY_LIMIT_BASIS_POINTS(inner) => {
9156                    <MAX_DAILY_LIMIT_BASIS_POINTSCall as alloy_sol_types::SolCall>::abi_encode_raw(
9157                        inner,
9158                        out,
9159                    )
9160                }
9161                Self::PAUSER_ROLE(inner) => {
9162                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9163                        inner,
9164                        out,
9165                    )
9166                }
9167                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9168                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
9169                        inner,
9170                        out,
9171                    )
9172                }
9173                Self::claimRewards(inner) => {
9174                    <claimRewardsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9175                        inner,
9176                        out,
9177                    )
9178                }
9179                Self::claimedRewards(inner) => {
9180                    <claimedRewardsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9181                        inner,
9182                        out,
9183                    )
9184                }
9185                Self::currentAdmin(inner) => {
9186                    <currentAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
9187                        inner,
9188                        out,
9189                    )
9190                }
9191                Self::dailyLimitWei(inner) => {
9192                    <dailyLimitWeiCall as alloy_sol_types::SolCall>::abi_encode_raw(
9193                        inner,
9194                        out,
9195                    )
9196                }
9197                Self::espToken(inner) => {
9198                    <espTokenCall as alloy_sol_types::SolCall>::abi_encode_raw(
9199                        inner,
9200                        out,
9201                    )
9202                }
9203                Self::getRoleAdmin(inner) => {
9204                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
9205                        inner,
9206                        out,
9207                    )
9208                }
9209                Self::getVersion(inner) => {
9210                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
9211                        inner,
9212                        out,
9213                    )
9214                }
9215                Self::grantRole(inner) => {
9216                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9217                        inner,
9218                        out,
9219                    )
9220                }
9221                Self::hasRole(inner) => {
9222                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9223                }
9224                Self::initialize(inner) => {
9225                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9226                        inner,
9227                        out,
9228                    )
9229                }
9230                Self::lastSetDailyLimitBasisPoints(inner) => {
9231                    <lastSetDailyLimitBasisPointsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9232                        inner,
9233                        out,
9234                    )
9235                }
9236                Self::lightClient(inner) => {
9237                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
9238                        inner,
9239                        out,
9240                    )
9241                }
9242                Self::pause(inner) => {
9243                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9244                }
9245                Self::paused(inner) => {
9246                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9247                }
9248                Self::proxiableUUID(inner) => {
9249                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
9250                        inner,
9251                        out,
9252                    )
9253                }
9254                Self::renounceRole(inner) => {
9255                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9256                        inner,
9257                        out,
9258                    )
9259                }
9260                Self::revokeRole(inner) => {
9261                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9262                        inner,
9263                        out,
9264                    )
9265                }
9266                Self::setDailyLimit(inner) => {
9267                    <setDailyLimitCall as alloy_sol_types::SolCall>::abi_encode_raw(
9268                        inner,
9269                        out,
9270                    )
9271                }
9272                Self::supportsInterface(inner) => {
9273                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
9274                        inner,
9275                        out,
9276                    )
9277                }
9278                Self::totalClaimed(inner) => {
9279                    <totalClaimedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9280                        inner,
9281                        out,
9282                    )
9283                }
9284                Self::unpause(inner) => {
9285                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9286                }
9287                Self::upgradeToAndCall(inner) => {
9288                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
9289                        inner,
9290                        out,
9291                    )
9292                }
9293            }
9294        }
9295    }
9296    ///Container for all the [`RewardClaim`](self) custom errors.
9297    #[derive(Clone)]
9298    #[derive(serde::Serialize, serde::Deserialize)]
9299    #[derive(Debug, PartialEq, Eq, Hash)]
9300    pub enum RewardClaimErrors {
9301        #[allow(missing_docs)]
9302        AccessControlBadConfirmation(AccessControlBadConfirmation),
9303        #[allow(missing_docs)]
9304        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
9305        #[allow(missing_docs)]
9306        AddressEmptyCode(AddressEmptyCode),
9307        #[allow(missing_docs)]
9308        AlreadyClaimed(AlreadyClaimed),
9309        #[allow(missing_docs)]
9310        DailyLimitExceeded(DailyLimitExceeded),
9311        #[allow(missing_docs)]
9312        DailyLimitTooHigh(DailyLimitTooHigh),
9313        #[allow(missing_docs)]
9314        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
9315        #[allow(missing_docs)]
9316        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
9317        #[allow(missing_docs)]
9318        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
9319        #[allow(missing_docs)]
9320        ERC1967NonPayable(ERC1967NonPayable),
9321        #[allow(missing_docs)]
9322        EnforcedPause(EnforcedPause),
9323        #[allow(missing_docs)]
9324        ExpectedPause(ExpectedPause),
9325        #[allow(missing_docs)]
9326        FailedInnerCall(FailedInnerCall),
9327        #[allow(missing_docs)]
9328        InvalidAuthRoot(InvalidAuthRoot),
9329        #[allow(missing_docs)]
9330        InvalidInitialization(InvalidInitialization),
9331        #[allow(missing_docs)]
9332        InvalidRewardAmount(InvalidRewardAmount),
9333        #[allow(missing_docs)]
9334        NoChangeRequired(NoChangeRequired),
9335        #[allow(missing_docs)]
9336        NotInitializing(NotInitializing),
9337        #[allow(missing_docs)]
9338        ReentrancyGuardReentrantCall(ReentrancyGuardReentrantCall),
9339        #[allow(missing_docs)]
9340        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
9341        #[allow(missing_docs)]
9342        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
9343        #[allow(missing_docs)]
9344        ZeroAdminAddress(ZeroAdminAddress),
9345        #[allow(missing_docs)]
9346        ZeroDailyLimit(ZeroDailyLimit),
9347        #[allow(missing_docs)]
9348        ZeroLightClientAddress(ZeroLightClientAddress),
9349        #[allow(missing_docs)]
9350        ZeroPauserAddress(ZeroPauserAddress),
9351        #[allow(missing_docs)]
9352        ZeroTokenAddress(ZeroTokenAddress),
9353        #[allow(missing_docs)]
9354        ZeroTotalSupply(ZeroTotalSupply),
9355    }
9356    impl RewardClaimErrors {
9357        /// All the selectors of this enum.
9358        ///
9359        /// Note that the selectors might not be in the same order as the variants.
9360        /// No guarantees are made about the order of the selectors.
9361        ///
9362        /// Prefer using `SolInterface` methods instead.
9363        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9364            [20u8, 37u8, 234u8, 66u8],
9365            [25u8, 75u8, 211u8, 20u8],
9366            [50u8, 139u8, 136u8, 120u8],
9367            [56u8, 83u8, 152u8, 101u8],
9368            [62u8, 229u8, 174u8, 181u8],
9369            [62u8, 243u8, 155u8, 129u8],
9370            [72u8, 181u8, 0u8, 35u8],
9371            [76u8, 156u8, 140u8, 227u8],
9372            [100u8, 108u8, 245u8, 88u8],
9373            [102u8, 151u8, 178u8, 50u8],
9374            [107u8, 9u8, 58u8, 173u8],
9375            [139u8, 120u8, 99u8, 29u8],
9376            [141u8, 252u8, 32u8, 43u8],
9377            [153u8, 150u8, 179u8, 21u8],
9378            [155u8, 17u8, 168u8, 189u8],
9379            [167u8, 73u8, 149u8, 171u8],
9380            [168u8, 99u8, 174u8, 201u8],
9381            [170u8, 29u8, 73u8, 164u8],
9382            [176u8, 181u8, 251u8, 153u8],
9383            [179u8, 152u8, 151u8, 159u8],
9384            [197u8, 210u8, 174u8, 83u8],
9385            [215u8, 230u8, 188u8, 248u8],
9386            [217u8, 60u8, 6u8, 101u8],
9387            [224u8, 124u8, 141u8, 186u8],
9388            [226u8, 81u8, 125u8, 63u8],
9389            [249u8, 46u8, 232u8, 169u8],
9390            [252u8, 171u8, 221u8, 189u8],
9391        ];
9392        /// The names of the variants in the same order as `SELECTORS`.
9393        pub const VARIANT_NAMES: &'static [&'static str] = &[
9394            ::core::stringify!(FailedInnerCall),
9395            ::core::stringify!(DailyLimitExceeded),
9396            ::core::stringify!(InvalidAuthRoot),
9397            ::core::stringify!(InvalidRewardAmount),
9398            ::core::stringify!(ReentrancyGuardReentrantCall),
9399            ::core::stringify!(ZeroAdminAddress),
9400            ::core::stringify!(ZeroTotalSupply),
9401            ::core::stringify!(ERC1967InvalidImplementation),
9402            ::core::stringify!(AlreadyClaimed),
9403            ::core::stringify!(AccessControlBadConfirmation),
9404            ::core::stringify!(ZeroTokenAddress),
9405            ::core::stringify!(DefaultAdminCannotBeRenounced),
9406            ::core::stringify!(ExpectedPause),
9407            ::core::stringify!(AddressEmptyCode),
9408            ::core::stringify!(ZeroDailyLimit),
9409            ::core::stringify!(ZeroPauserAddress),
9410            ::core::stringify!(NoChangeRequired),
9411            ::core::stringify!(UUPSUnsupportedProxiableUUID),
9412            ::core::stringify!(DefaultAdminCannotBeRevoked),
9413            ::core::stringify!(ERC1967NonPayable),
9414            ::core::stringify!(DailyLimitTooHigh),
9415            ::core::stringify!(NotInitializing),
9416            ::core::stringify!(EnforcedPause),
9417            ::core::stringify!(UUPSUnauthorizedCallContext),
9418            ::core::stringify!(AccessControlUnauthorizedAccount),
9419            ::core::stringify!(InvalidInitialization),
9420            ::core::stringify!(ZeroLightClientAddress),
9421        ];
9422        /// The signatures in the same order as `SELECTORS`.
9423        pub const SIGNATURES: &'static [&'static str] = &[
9424            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
9425            <DailyLimitExceeded as alloy_sol_types::SolError>::SIGNATURE,
9426            <InvalidAuthRoot as alloy_sol_types::SolError>::SIGNATURE,
9427            <InvalidRewardAmount as alloy_sol_types::SolError>::SIGNATURE,
9428            <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::SIGNATURE,
9429            <ZeroAdminAddress as alloy_sol_types::SolError>::SIGNATURE,
9430            <ZeroTotalSupply as alloy_sol_types::SolError>::SIGNATURE,
9431            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
9432            <AlreadyClaimed as alloy_sol_types::SolError>::SIGNATURE,
9433            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
9434            <ZeroTokenAddress as alloy_sol_types::SolError>::SIGNATURE,
9435            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
9436            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
9437            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
9438            <ZeroDailyLimit as alloy_sol_types::SolError>::SIGNATURE,
9439            <ZeroPauserAddress as alloy_sol_types::SolError>::SIGNATURE,
9440            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
9441            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
9442            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
9443            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
9444            <DailyLimitTooHigh as alloy_sol_types::SolError>::SIGNATURE,
9445            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
9446            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
9447            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
9448            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
9449            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
9450            <ZeroLightClientAddress as alloy_sol_types::SolError>::SIGNATURE,
9451        ];
9452        /// Returns the signature for the given selector, if known.
9453        #[inline]
9454        pub fn signature_by_selector(
9455            selector: [u8; 4usize],
9456        ) -> ::core::option::Option<&'static str> {
9457            match Self::SELECTORS.binary_search(&selector) {
9458                ::core::result::Result::Ok(idx) => {
9459                    ::core::option::Option::Some(Self::SIGNATURES[idx])
9460                }
9461                ::core::result::Result::Err(_) => ::core::option::Option::None,
9462            }
9463        }
9464        /// Returns the enum variant name for the given selector, if known.
9465        #[inline]
9466        pub fn name_by_selector(
9467            selector: [u8; 4usize],
9468        ) -> ::core::option::Option<&'static str> {
9469            let sig = Self::signature_by_selector(selector)?;
9470            sig.split_once('(').map(|(name, _)| name)
9471        }
9472    }
9473    #[automatically_derived]
9474    impl alloy_sol_types::SolInterface for RewardClaimErrors {
9475        const NAME: &'static str = "RewardClaimErrors";
9476        const MIN_DATA_LENGTH: usize = 0usize;
9477        const COUNT: usize = 27usize;
9478        #[inline]
9479        fn selector(&self) -> [u8; 4] {
9480            match self {
9481                Self::AccessControlBadConfirmation(_) => {
9482                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
9483                }
9484                Self::AccessControlUnauthorizedAccount(_) => {
9485                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9486                }
9487                Self::AddressEmptyCode(_) => {
9488                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
9489                }
9490                Self::AlreadyClaimed(_) => {
9491                    <AlreadyClaimed as alloy_sol_types::SolError>::SELECTOR
9492                }
9493                Self::DailyLimitExceeded(_) => {
9494                    <DailyLimitExceeded as alloy_sol_types::SolError>::SELECTOR
9495                }
9496                Self::DailyLimitTooHigh(_) => {
9497                    <DailyLimitTooHigh as alloy_sol_types::SolError>::SELECTOR
9498                }
9499                Self::DefaultAdminCannotBeRenounced(_) => {
9500                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
9501                }
9502                Self::DefaultAdminCannotBeRevoked(_) => {
9503                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
9504                }
9505                Self::ERC1967InvalidImplementation(_) => {
9506                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
9507                }
9508                Self::ERC1967NonPayable(_) => {
9509                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
9510                }
9511                Self::EnforcedPause(_) => {
9512                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
9513                }
9514                Self::ExpectedPause(_) => {
9515                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
9516                }
9517                Self::FailedInnerCall(_) => {
9518                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9519                }
9520                Self::InvalidAuthRoot(_) => {
9521                    <InvalidAuthRoot as alloy_sol_types::SolError>::SELECTOR
9522                }
9523                Self::InvalidInitialization(_) => {
9524                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
9525                }
9526                Self::InvalidRewardAmount(_) => {
9527                    <InvalidRewardAmount as alloy_sol_types::SolError>::SELECTOR
9528                }
9529                Self::NoChangeRequired(_) => {
9530                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
9531                }
9532                Self::NotInitializing(_) => {
9533                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
9534                }
9535                Self::ReentrancyGuardReentrantCall(_) => {
9536                    <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::SELECTOR
9537                }
9538                Self::UUPSUnauthorizedCallContext(_) => {
9539                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
9540                }
9541                Self::UUPSUnsupportedProxiableUUID(_) => {
9542                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
9543                }
9544                Self::ZeroAdminAddress(_) => {
9545                    <ZeroAdminAddress as alloy_sol_types::SolError>::SELECTOR
9546                }
9547                Self::ZeroDailyLimit(_) => {
9548                    <ZeroDailyLimit as alloy_sol_types::SolError>::SELECTOR
9549                }
9550                Self::ZeroLightClientAddress(_) => {
9551                    <ZeroLightClientAddress as alloy_sol_types::SolError>::SELECTOR
9552                }
9553                Self::ZeroPauserAddress(_) => {
9554                    <ZeroPauserAddress as alloy_sol_types::SolError>::SELECTOR
9555                }
9556                Self::ZeroTokenAddress(_) => {
9557                    <ZeroTokenAddress as alloy_sol_types::SolError>::SELECTOR
9558                }
9559                Self::ZeroTotalSupply(_) => {
9560                    <ZeroTotalSupply as alloy_sol_types::SolError>::SELECTOR
9561                }
9562            }
9563        }
9564        #[inline]
9565        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9566            Self::SELECTORS.get(i).copied()
9567        }
9568        #[inline]
9569        fn valid_selector(selector: [u8; 4]) -> bool {
9570            Self::SELECTORS.binary_search(&selector).is_ok()
9571        }
9572        #[inline]
9573        #[allow(non_snake_case)]
9574        fn abi_decode_raw(
9575            selector: [u8; 4],
9576            data: &[u8],
9577        ) -> alloy_sol_types::Result<Self> {
9578            static DECODE_SHIMS: &[fn(
9579                &[u8],
9580            ) -> alloy_sol_types::Result<RewardClaimErrors>] = &[
9581                {
9582                    fn FailedInnerCall(
9583                        data: &[u8],
9584                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9585                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9586                                data,
9587                            )
9588                            .map(RewardClaimErrors::FailedInnerCall)
9589                    }
9590                    FailedInnerCall
9591                },
9592                {
9593                    fn DailyLimitExceeded(
9594                        data: &[u8],
9595                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9596                        <DailyLimitExceeded as alloy_sol_types::SolError>::abi_decode_raw(
9597                                data,
9598                            )
9599                            .map(RewardClaimErrors::DailyLimitExceeded)
9600                    }
9601                    DailyLimitExceeded
9602                },
9603                {
9604                    fn InvalidAuthRoot(
9605                        data: &[u8],
9606                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9607                        <InvalidAuthRoot as alloy_sol_types::SolError>::abi_decode_raw(
9608                                data,
9609                            )
9610                            .map(RewardClaimErrors::InvalidAuthRoot)
9611                    }
9612                    InvalidAuthRoot
9613                },
9614                {
9615                    fn InvalidRewardAmount(
9616                        data: &[u8],
9617                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9618                        <InvalidRewardAmount as alloy_sol_types::SolError>::abi_decode_raw(
9619                                data,
9620                            )
9621                            .map(RewardClaimErrors::InvalidRewardAmount)
9622                    }
9623                    InvalidRewardAmount
9624                },
9625                {
9626                    fn ReentrancyGuardReentrantCall(
9627                        data: &[u8],
9628                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9629                        <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_decode_raw(
9630                                data,
9631                            )
9632                            .map(RewardClaimErrors::ReentrancyGuardReentrantCall)
9633                    }
9634                    ReentrancyGuardReentrantCall
9635                },
9636                {
9637                    fn ZeroAdminAddress(
9638                        data: &[u8],
9639                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9640                        <ZeroAdminAddress as alloy_sol_types::SolError>::abi_decode_raw(
9641                                data,
9642                            )
9643                            .map(RewardClaimErrors::ZeroAdminAddress)
9644                    }
9645                    ZeroAdminAddress
9646                },
9647                {
9648                    fn ZeroTotalSupply(
9649                        data: &[u8],
9650                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9651                        <ZeroTotalSupply as alloy_sol_types::SolError>::abi_decode_raw(
9652                                data,
9653                            )
9654                            .map(RewardClaimErrors::ZeroTotalSupply)
9655                    }
9656                    ZeroTotalSupply
9657                },
9658                {
9659                    fn ERC1967InvalidImplementation(
9660                        data: &[u8],
9661                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9662                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
9663                                data,
9664                            )
9665                            .map(RewardClaimErrors::ERC1967InvalidImplementation)
9666                    }
9667                    ERC1967InvalidImplementation
9668                },
9669                {
9670                    fn AlreadyClaimed(
9671                        data: &[u8],
9672                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9673                        <AlreadyClaimed as alloy_sol_types::SolError>::abi_decode_raw(
9674                                data,
9675                            )
9676                            .map(RewardClaimErrors::AlreadyClaimed)
9677                    }
9678                    AlreadyClaimed
9679                },
9680                {
9681                    fn AccessControlBadConfirmation(
9682                        data: &[u8],
9683                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9684                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
9685                                data,
9686                            )
9687                            .map(RewardClaimErrors::AccessControlBadConfirmation)
9688                    }
9689                    AccessControlBadConfirmation
9690                },
9691                {
9692                    fn ZeroTokenAddress(
9693                        data: &[u8],
9694                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9695                        <ZeroTokenAddress as alloy_sol_types::SolError>::abi_decode_raw(
9696                                data,
9697                            )
9698                            .map(RewardClaimErrors::ZeroTokenAddress)
9699                    }
9700                    ZeroTokenAddress
9701                },
9702                {
9703                    fn DefaultAdminCannotBeRenounced(
9704                        data: &[u8],
9705                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9706                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
9707                                data,
9708                            )
9709                            .map(RewardClaimErrors::DefaultAdminCannotBeRenounced)
9710                    }
9711                    DefaultAdminCannotBeRenounced
9712                },
9713                {
9714                    fn ExpectedPause(
9715                        data: &[u8],
9716                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9717                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
9718                                data,
9719                            )
9720                            .map(RewardClaimErrors::ExpectedPause)
9721                    }
9722                    ExpectedPause
9723                },
9724                {
9725                    fn AddressEmptyCode(
9726                        data: &[u8],
9727                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9728                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
9729                                data,
9730                            )
9731                            .map(RewardClaimErrors::AddressEmptyCode)
9732                    }
9733                    AddressEmptyCode
9734                },
9735                {
9736                    fn ZeroDailyLimit(
9737                        data: &[u8],
9738                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9739                        <ZeroDailyLimit as alloy_sol_types::SolError>::abi_decode_raw(
9740                                data,
9741                            )
9742                            .map(RewardClaimErrors::ZeroDailyLimit)
9743                    }
9744                    ZeroDailyLimit
9745                },
9746                {
9747                    fn ZeroPauserAddress(
9748                        data: &[u8],
9749                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9750                        <ZeroPauserAddress as alloy_sol_types::SolError>::abi_decode_raw(
9751                                data,
9752                            )
9753                            .map(RewardClaimErrors::ZeroPauserAddress)
9754                    }
9755                    ZeroPauserAddress
9756                },
9757                {
9758                    fn NoChangeRequired(
9759                        data: &[u8],
9760                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9761                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
9762                                data,
9763                            )
9764                            .map(RewardClaimErrors::NoChangeRequired)
9765                    }
9766                    NoChangeRequired
9767                },
9768                {
9769                    fn UUPSUnsupportedProxiableUUID(
9770                        data: &[u8],
9771                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9772                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
9773                                data,
9774                            )
9775                            .map(RewardClaimErrors::UUPSUnsupportedProxiableUUID)
9776                    }
9777                    UUPSUnsupportedProxiableUUID
9778                },
9779                {
9780                    fn DefaultAdminCannotBeRevoked(
9781                        data: &[u8],
9782                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9783                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw(
9784                                data,
9785                            )
9786                            .map(RewardClaimErrors::DefaultAdminCannotBeRevoked)
9787                    }
9788                    DefaultAdminCannotBeRevoked
9789                },
9790                {
9791                    fn ERC1967NonPayable(
9792                        data: &[u8],
9793                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9794                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
9795                                data,
9796                            )
9797                            .map(RewardClaimErrors::ERC1967NonPayable)
9798                    }
9799                    ERC1967NonPayable
9800                },
9801                {
9802                    fn DailyLimitTooHigh(
9803                        data: &[u8],
9804                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9805                        <DailyLimitTooHigh as alloy_sol_types::SolError>::abi_decode_raw(
9806                                data,
9807                            )
9808                            .map(RewardClaimErrors::DailyLimitTooHigh)
9809                    }
9810                    DailyLimitTooHigh
9811                },
9812                {
9813                    fn NotInitializing(
9814                        data: &[u8],
9815                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9816                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
9817                                data,
9818                            )
9819                            .map(RewardClaimErrors::NotInitializing)
9820                    }
9821                    NotInitializing
9822                },
9823                {
9824                    fn EnforcedPause(
9825                        data: &[u8],
9826                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9827                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
9828                                data,
9829                            )
9830                            .map(RewardClaimErrors::EnforcedPause)
9831                    }
9832                    EnforcedPause
9833                },
9834                {
9835                    fn UUPSUnauthorizedCallContext(
9836                        data: &[u8],
9837                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9838                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
9839                                data,
9840                            )
9841                            .map(RewardClaimErrors::UUPSUnauthorizedCallContext)
9842                    }
9843                    UUPSUnauthorizedCallContext
9844                },
9845                {
9846                    fn AccessControlUnauthorizedAccount(
9847                        data: &[u8],
9848                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9849                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9850                                data,
9851                            )
9852                            .map(RewardClaimErrors::AccessControlUnauthorizedAccount)
9853                    }
9854                    AccessControlUnauthorizedAccount
9855                },
9856                {
9857                    fn InvalidInitialization(
9858                        data: &[u8],
9859                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9860                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
9861                                data,
9862                            )
9863                            .map(RewardClaimErrors::InvalidInitialization)
9864                    }
9865                    InvalidInitialization
9866                },
9867                {
9868                    fn ZeroLightClientAddress(
9869                        data: &[u8],
9870                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9871                        <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_decode_raw(
9872                                data,
9873                            )
9874                            .map(RewardClaimErrors::ZeroLightClientAddress)
9875                    }
9876                    ZeroLightClientAddress
9877                },
9878            ];
9879            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9880                return Err(
9881                    alloy_sol_types::Error::unknown_selector(
9882                        <Self as alloy_sol_types::SolInterface>::NAME,
9883                        selector,
9884                    ),
9885                );
9886            };
9887            DECODE_SHIMS[idx](data)
9888        }
9889        #[inline]
9890        #[allow(non_snake_case)]
9891        fn abi_decode_raw_validate(
9892            selector: [u8; 4],
9893            data: &[u8],
9894        ) -> alloy_sol_types::Result<Self> {
9895            static DECODE_VALIDATE_SHIMS: &[fn(
9896                &[u8],
9897            ) -> alloy_sol_types::Result<RewardClaimErrors>] = &[
9898                {
9899                    fn FailedInnerCall(
9900                        data: &[u8],
9901                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9902                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9903                                data,
9904                            )
9905                            .map(RewardClaimErrors::FailedInnerCall)
9906                    }
9907                    FailedInnerCall
9908                },
9909                {
9910                    fn DailyLimitExceeded(
9911                        data: &[u8],
9912                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9913                        <DailyLimitExceeded as alloy_sol_types::SolError>::abi_decode_raw_validate(
9914                                data,
9915                            )
9916                            .map(RewardClaimErrors::DailyLimitExceeded)
9917                    }
9918                    DailyLimitExceeded
9919                },
9920                {
9921                    fn InvalidAuthRoot(
9922                        data: &[u8],
9923                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9924                        <InvalidAuthRoot as alloy_sol_types::SolError>::abi_decode_raw_validate(
9925                                data,
9926                            )
9927                            .map(RewardClaimErrors::InvalidAuthRoot)
9928                    }
9929                    InvalidAuthRoot
9930                },
9931                {
9932                    fn InvalidRewardAmount(
9933                        data: &[u8],
9934                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9935                        <InvalidRewardAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9936                                data,
9937                            )
9938                            .map(RewardClaimErrors::InvalidRewardAmount)
9939                    }
9940                    InvalidRewardAmount
9941                },
9942                {
9943                    fn ReentrancyGuardReentrantCall(
9944                        data: &[u8],
9945                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9946                        <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9947                                data,
9948                            )
9949                            .map(RewardClaimErrors::ReentrancyGuardReentrantCall)
9950                    }
9951                    ReentrancyGuardReentrantCall
9952                },
9953                {
9954                    fn ZeroAdminAddress(
9955                        data: &[u8],
9956                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9957                        <ZeroAdminAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
9958                                data,
9959                            )
9960                            .map(RewardClaimErrors::ZeroAdminAddress)
9961                    }
9962                    ZeroAdminAddress
9963                },
9964                {
9965                    fn ZeroTotalSupply(
9966                        data: &[u8],
9967                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9968                        <ZeroTotalSupply as alloy_sol_types::SolError>::abi_decode_raw_validate(
9969                                data,
9970                            )
9971                            .map(RewardClaimErrors::ZeroTotalSupply)
9972                    }
9973                    ZeroTotalSupply
9974                },
9975                {
9976                    fn ERC1967InvalidImplementation(
9977                        data: &[u8],
9978                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9979                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
9980                                data,
9981                            )
9982                            .map(RewardClaimErrors::ERC1967InvalidImplementation)
9983                    }
9984                    ERC1967InvalidImplementation
9985                },
9986                {
9987                    fn AlreadyClaimed(
9988                        data: &[u8],
9989                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9990                        <AlreadyClaimed as alloy_sol_types::SolError>::abi_decode_raw_validate(
9991                                data,
9992                            )
9993                            .map(RewardClaimErrors::AlreadyClaimed)
9994                    }
9995                    AlreadyClaimed
9996                },
9997                {
9998                    fn AccessControlBadConfirmation(
9999                        data: &[u8],
10000                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10001                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
10002                                data,
10003                            )
10004                            .map(RewardClaimErrors::AccessControlBadConfirmation)
10005                    }
10006                    AccessControlBadConfirmation
10007                },
10008                {
10009                    fn ZeroTokenAddress(
10010                        data: &[u8],
10011                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10012                        <ZeroTokenAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
10013                                data,
10014                            )
10015                            .map(RewardClaimErrors::ZeroTokenAddress)
10016                    }
10017                    ZeroTokenAddress
10018                },
10019                {
10020                    fn DefaultAdminCannotBeRenounced(
10021                        data: &[u8],
10022                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10023                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
10024                                data,
10025                            )
10026                            .map(RewardClaimErrors::DefaultAdminCannotBeRenounced)
10027                    }
10028                    DefaultAdminCannotBeRenounced
10029                },
10030                {
10031                    fn ExpectedPause(
10032                        data: &[u8],
10033                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10034                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
10035                                data,
10036                            )
10037                            .map(RewardClaimErrors::ExpectedPause)
10038                    }
10039                    ExpectedPause
10040                },
10041                {
10042                    fn AddressEmptyCode(
10043                        data: &[u8],
10044                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10045                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
10046                                data,
10047                            )
10048                            .map(RewardClaimErrors::AddressEmptyCode)
10049                    }
10050                    AddressEmptyCode
10051                },
10052                {
10053                    fn ZeroDailyLimit(
10054                        data: &[u8],
10055                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10056                        <ZeroDailyLimit as alloy_sol_types::SolError>::abi_decode_raw_validate(
10057                                data,
10058                            )
10059                            .map(RewardClaimErrors::ZeroDailyLimit)
10060                    }
10061                    ZeroDailyLimit
10062                },
10063                {
10064                    fn ZeroPauserAddress(
10065                        data: &[u8],
10066                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10067                        <ZeroPauserAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
10068                                data,
10069                            )
10070                            .map(RewardClaimErrors::ZeroPauserAddress)
10071                    }
10072                    ZeroPauserAddress
10073                },
10074                {
10075                    fn NoChangeRequired(
10076                        data: &[u8],
10077                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10078                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
10079                                data,
10080                            )
10081                            .map(RewardClaimErrors::NoChangeRequired)
10082                    }
10083                    NoChangeRequired
10084                },
10085                {
10086                    fn UUPSUnsupportedProxiableUUID(
10087                        data: &[u8],
10088                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10089                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
10090                                data,
10091                            )
10092                            .map(RewardClaimErrors::UUPSUnsupportedProxiableUUID)
10093                    }
10094                    UUPSUnsupportedProxiableUUID
10095                },
10096                {
10097                    fn DefaultAdminCannotBeRevoked(
10098                        data: &[u8],
10099                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10100                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_validate(
10101                                data,
10102                            )
10103                            .map(RewardClaimErrors::DefaultAdminCannotBeRevoked)
10104                    }
10105                    DefaultAdminCannotBeRevoked
10106                },
10107                {
10108                    fn ERC1967NonPayable(
10109                        data: &[u8],
10110                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10111                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
10112                                data,
10113                            )
10114                            .map(RewardClaimErrors::ERC1967NonPayable)
10115                    }
10116                    ERC1967NonPayable
10117                },
10118                {
10119                    fn DailyLimitTooHigh(
10120                        data: &[u8],
10121                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10122                        <DailyLimitTooHigh as alloy_sol_types::SolError>::abi_decode_raw_validate(
10123                                data,
10124                            )
10125                            .map(RewardClaimErrors::DailyLimitTooHigh)
10126                    }
10127                    DailyLimitTooHigh
10128                },
10129                {
10130                    fn NotInitializing(
10131                        data: &[u8],
10132                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10133                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
10134                                data,
10135                            )
10136                            .map(RewardClaimErrors::NotInitializing)
10137                    }
10138                    NotInitializing
10139                },
10140                {
10141                    fn EnforcedPause(
10142                        data: &[u8],
10143                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10144                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
10145                                data,
10146                            )
10147                            .map(RewardClaimErrors::EnforcedPause)
10148                    }
10149                    EnforcedPause
10150                },
10151                {
10152                    fn UUPSUnauthorizedCallContext(
10153                        data: &[u8],
10154                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10155                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
10156                                data,
10157                            )
10158                            .map(RewardClaimErrors::UUPSUnauthorizedCallContext)
10159                    }
10160                    UUPSUnauthorizedCallContext
10161                },
10162                {
10163                    fn AccessControlUnauthorizedAccount(
10164                        data: &[u8],
10165                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10166                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
10167                                data,
10168                            )
10169                            .map(RewardClaimErrors::AccessControlUnauthorizedAccount)
10170                    }
10171                    AccessControlUnauthorizedAccount
10172                },
10173                {
10174                    fn InvalidInitialization(
10175                        data: &[u8],
10176                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10177                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
10178                                data,
10179                            )
10180                            .map(RewardClaimErrors::InvalidInitialization)
10181                    }
10182                    InvalidInitialization
10183                },
10184                {
10185                    fn ZeroLightClientAddress(
10186                        data: &[u8],
10187                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
10188                        <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
10189                                data,
10190                            )
10191                            .map(RewardClaimErrors::ZeroLightClientAddress)
10192                    }
10193                    ZeroLightClientAddress
10194                },
10195            ];
10196            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10197                return Err(
10198                    alloy_sol_types::Error::unknown_selector(
10199                        <Self as alloy_sol_types::SolInterface>::NAME,
10200                        selector,
10201                    ),
10202                );
10203            };
10204            DECODE_VALIDATE_SHIMS[idx](data)
10205        }
10206        #[inline]
10207        fn abi_encoded_size(&self) -> usize {
10208            match self {
10209                Self::AccessControlBadConfirmation(inner) => {
10210                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
10211                        inner,
10212                    )
10213                }
10214                Self::AccessControlUnauthorizedAccount(inner) => {
10215                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
10216                        inner,
10217                    )
10218                }
10219                Self::AddressEmptyCode(inner) => {
10220                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
10221                        inner,
10222                    )
10223                }
10224                Self::AlreadyClaimed(inner) => {
10225                    <AlreadyClaimed as alloy_sol_types::SolError>::abi_encoded_size(
10226                        inner,
10227                    )
10228                }
10229                Self::DailyLimitExceeded(inner) => {
10230                    <DailyLimitExceeded as alloy_sol_types::SolError>::abi_encoded_size(
10231                        inner,
10232                    )
10233                }
10234                Self::DailyLimitTooHigh(inner) => {
10235                    <DailyLimitTooHigh as alloy_sol_types::SolError>::abi_encoded_size(
10236                        inner,
10237                    )
10238                }
10239                Self::DefaultAdminCannotBeRenounced(inner) => {
10240                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
10241                        inner,
10242                    )
10243                }
10244                Self::DefaultAdminCannotBeRevoked(inner) => {
10245                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
10246                        inner,
10247                    )
10248                }
10249                Self::ERC1967InvalidImplementation(inner) => {
10250                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
10251                        inner,
10252                    )
10253                }
10254                Self::ERC1967NonPayable(inner) => {
10255                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
10256                        inner,
10257                    )
10258                }
10259                Self::EnforcedPause(inner) => {
10260                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
10261                }
10262                Self::ExpectedPause(inner) => {
10263                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
10264                }
10265                Self::FailedInnerCall(inner) => {
10266                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
10267                        inner,
10268                    )
10269                }
10270                Self::InvalidAuthRoot(inner) => {
10271                    <InvalidAuthRoot as alloy_sol_types::SolError>::abi_encoded_size(
10272                        inner,
10273                    )
10274                }
10275                Self::InvalidInitialization(inner) => {
10276                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
10277                        inner,
10278                    )
10279                }
10280                Self::InvalidRewardAmount(inner) => {
10281                    <InvalidRewardAmount as alloy_sol_types::SolError>::abi_encoded_size(
10282                        inner,
10283                    )
10284                }
10285                Self::NoChangeRequired(inner) => {
10286                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
10287                        inner,
10288                    )
10289                }
10290                Self::NotInitializing(inner) => {
10291                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
10292                        inner,
10293                    )
10294                }
10295                Self::ReentrancyGuardReentrantCall(inner) => {
10296                    <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_encoded_size(
10297                        inner,
10298                    )
10299                }
10300                Self::UUPSUnauthorizedCallContext(inner) => {
10301                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
10302                        inner,
10303                    )
10304                }
10305                Self::UUPSUnsupportedProxiableUUID(inner) => {
10306                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
10307                        inner,
10308                    )
10309                }
10310                Self::ZeroAdminAddress(inner) => {
10311                    <ZeroAdminAddress as alloy_sol_types::SolError>::abi_encoded_size(
10312                        inner,
10313                    )
10314                }
10315                Self::ZeroDailyLimit(inner) => {
10316                    <ZeroDailyLimit as alloy_sol_types::SolError>::abi_encoded_size(
10317                        inner,
10318                    )
10319                }
10320                Self::ZeroLightClientAddress(inner) => {
10321                    <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_encoded_size(
10322                        inner,
10323                    )
10324                }
10325                Self::ZeroPauserAddress(inner) => {
10326                    <ZeroPauserAddress as alloy_sol_types::SolError>::abi_encoded_size(
10327                        inner,
10328                    )
10329                }
10330                Self::ZeroTokenAddress(inner) => {
10331                    <ZeroTokenAddress as alloy_sol_types::SolError>::abi_encoded_size(
10332                        inner,
10333                    )
10334                }
10335                Self::ZeroTotalSupply(inner) => {
10336                    <ZeroTotalSupply as alloy_sol_types::SolError>::abi_encoded_size(
10337                        inner,
10338                    )
10339                }
10340            }
10341        }
10342        #[inline]
10343        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10344            match self {
10345                Self::AccessControlBadConfirmation(inner) => {
10346                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
10347                        inner,
10348                        out,
10349                    )
10350                }
10351                Self::AccessControlUnauthorizedAccount(inner) => {
10352                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
10353                        inner,
10354                        out,
10355                    )
10356                }
10357                Self::AddressEmptyCode(inner) => {
10358                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
10359                        inner,
10360                        out,
10361                    )
10362                }
10363                Self::AlreadyClaimed(inner) => {
10364                    <AlreadyClaimed as alloy_sol_types::SolError>::abi_encode_raw(
10365                        inner,
10366                        out,
10367                    )
10368                }
10369                Self::DailyLimitExceeded(inner) => {
10370                    <DailyLimitExceeded as alloy_sol_types::SolError>::abi_encode_raw(
10371                        inner,
10372                        out,
10373                    )
10374                }
10375                Self::DailyLimitTooHigh(inner) => {
10376                    <DailyLimitTooHigh as alloy_sol_types::SolError>::abi_encode_raw(
10377                        inner,
10378                        out,
10379                    )
10380                }
10381                Self::DefaultAdminCannotBeRenounced(inner) => {
10382                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
10383                        inner,
10384                        out,
10385                    )
10386                }
10387                Self::DefaultAdminCannotBeRevoked(inner) => {
10388                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
10389                        inner,
10390                        out,
10391                    )
10392                }
10393                Self::ERC1967InvalidImplementation(inner) => {
10394                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
10395                        inner,
10396                        out,
10397                    )
10398                }
10399                Self::ERC1967NonPayable(inner) => {
10400                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
10401                        inner,
10402                        out,
10403                    )
10404                }
10405                Self::EnforcedPause(inner) => {
10406                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
10407                        inner,
10408                        out,
10409                    )
10410                }
10411                Self::ExpectedPause(inner) => {
10412                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
10413                        inner,
10414                        out,
10415                    )
10416                }
10417                Self::FailedInnerCall(inner) => {
10418                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
10419                        inner,
10420                        out,
10421                    )
10422                }
10423                Self::InvalidAuthRoot(inner) => {
10424                    <InvalidAuthRoot as alloy_sol_types::SolError>::abi_encode_raw(
10425                        inner,
10426                        out,
10427                    )
10428                }
10429                Self::InvalidInitialization(inner) => {
10430                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
10431                        inner,
10432                        out,
10433                    )
10434                }
10435                Self::InvalidRewardAmount(inner) => {
10436                    <InvalidRewardAmount as alloy_sol_types::SolError>::abi_encode_raw(
10437                        inner,
10438                        out,
10439                    )
10440                }
10441                Self::NoChangeRequired(inner) => {
10442                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
10443                        inner,
10444                        out,
10445                    )
10446                }
10447                Self::NotInitializing(inner) => {
10448                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
10449                        inner,
10450                        out,
10451                    )
10452                }
10453                Self::ReentrancyGuardReentrantCall(inner) => {
10454                    <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_encode_raw(
10455                        inner,
10456                        out,
10457                    )
10458                }
10459                Self::UUPSUnauthorizedCallContext(inner) => {
10460                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
10461                        inner,
10462                        out,
10463                    )
10464                }
10465                Self::UUPSUnsupportedProxiableUUID(inner) => {
10466                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
10467                        inner,
10468                        out,
10469                    )
10470                }
10471                Self::ZeroAdminAddress(inner) => {
10472                    <ZeroAdminAddress as alloy_sol_types::SolError>::abi_encode_raw(
10473                        inner,
10474                        out,
10475                    )
10476                }
10477                Self::ZeroDailyLimit(inner) => {
10478                    <ZeroDailyLimit as alloy_sol_types::SolError>::abi_encode_raw(
10479                        inner,
10480                        out,
10481                    )
10482                }
10483                Self::ZeroLightClientAddress(inner) => {
10484                    <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_encode_raw(
10485                        inner,
10486                        out,
10487                    )
10488                }
10489                Self::ZeroPauserAddress(inner) => {
10490                    <ZeroPauserAddress as alloy_sol_types::SolError>::abi_encode_raw(
10491                        inner,
10492                        out,
10493                    )
10494                }
10495                Self::ZeroTokenAddress(inner) => {
10496                    <ZeroTokenAddress as alloy_sol_types::SolError>::abi_encode_raw(
10497                        inner,
10498                        out,
10499                    )
10500                }
10501                Self::ZeroTotalSupply(inner) => {
10502                    <ZeroTotalSupply as alloy_sol_types::SolError>::abi_encode_raw(
10503                        inner,
10504                        out,
10505                    )
10506                }
10507            }
10508        }
10509    }
10510    ///Container for all the [`RewardClaim`](self) events.
10511    #[derive(Clone)]
10512    #[derive(serde::Serialize, serde::Deserialize)]
10513    #[derive(Debug, PartialEq, Eq, Hash)]
10514    pub enum RewardClaimEvents {
10515        #[allow(missing_docs)]
10516        DailyLimitUpdated(DailyLimitUpdated),
10517        #[allow(missing_docs)]
10518        Initialized(Initialized),
10519        #[allow(missing_docs)]
10520        Paused(Paused),
10521        #[allow(missing_docs)]
10522        RewardsClaimed(RewardsClaimed),
10523        #[allow(missing_docs)]
10524        RoleAdminChanged(RoleAdminChanged),
10525        #[allow(missing_docs)]
10526        RoleGranted(RoleGranted),
10527        #[allow(missing_docs)]
10528        RoleRevoked(RoleRevoked),
10529        #[allow(missing_docs)]
10530        Unpaused(Unpaused),
10531        #[allow(missing_docs)]
10532        Upgraded(Upgraded),
10533    }
10534    impl RewardClaimEvents {
10535        /// All the selectors of this enum.
10536        ///
10537        /// Note that the selectors might not be in the same order as the variants.
10538        /// No guarantees are made about the order of the selectors.
10539        ///
10540        /// Prefer using `SolInterface` methods instead.
10541        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10542            [
10543                32u8, 124u8, 76u8, 189u8, 245u8, 94u8, 195u8, 21u8, 161u8, 63u8, 13u8,
10544                94u8, 4u8, 119u8, 50u8, 236u8, 93u8, 148u8, 125u8, 160u8, 86u8, 231u8,
10545                6u8, 89u8, 58u8, 165u8, 9u8, 144u8, 153u8, 65u8, 206u8, 223u8,
10546            ],
10547            [
10548                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
10549                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
10550                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
10551            ],
10552            [
10553                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
10554                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
10555                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
10556            ],
10557            [
10558                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
10559                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
10560                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
10561            ],
10562            [
10563                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10564                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10565                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10566            ],
10567            [
10568                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
10569                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
10570                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
10571            ],
10572            [
10573                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
10574                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
10575                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
10576            ],
10577            [
10578                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
10579                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
10580                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
10581            ],
10582            [
10583                252u8, 48u8, 205u8, 222u8, 163u8, 142u8, 43u8, 244u8, 214u8, 234u8,
10584                125u8, 63u8, 158u8, 211u8, 182u8, 173u8, 127u8, 23u8, 100u8, 25u8, 244u8,
10585                150u8, 59u8, 216u8, 19u8, 24u8, 6u8, 122u8, 74u8, 238u8, 115u8, 254u8,
10586            ],
10587        ];
10588        /// The names of the variants in the same order as `SELECTORS`.
10589        pub const VARIANT_NAMES: &'static [&'static str] = &[
10590            ::core::stringify!(DailyLimitUpdated),
10591            ::core::stringify!(RoleGranted),
10592            ::core::stringify!(Unpaused),
10593            ::core::stringify!(Paused),
10594            ::core::stringify!(Upgraded),
10595            ::core::stringify!(RoleAdminChanged),
10596            ::core::stringify!(Initialized),
10597            ::core::stringify!(RoleRevoked),
10598            ::core::stringify!(RewardsClaimed),
10599        ];
10600        /// The signatures in the same order as `SELECTORS`.
10601        pub const SIGNATURES: &'static [&'static str] = &[
10602            <DailyLimitUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
10603            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
10604            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
10605            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
10606            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
10607            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
10608            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
10609            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
10610            <RewardsClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
10611        ];
10612        /// Returns the signature for the given selector, if known.
10613        #[inline]
10614        pub fn signature_by_selector(
10615            selector: [u8; 32usize],
10616        ) -> ::core::option::Option<&'static str> {
10617            match Self::SELECTORS.binary_search(&selector) {
10618                ::core::result::Result::Ok(idx) => {
10619                    ::core::option::Option::Some(Self::SIGNATURES[idx])
10620                }
10621                ::core::result::Result::Err(_) => ::core::option::Option::None,
10622            }
10623        }
10624        /// Returns the enum variant name for the given selector, if known.
10625        #[inline]
10626        pub fn name_by_selector(
10627            selector: [u8; 32usize],
10628        ) -> ::core::option::Option<&'static str> {
10629            let sig = Self::signature_by_selector(selector)?;
10630            sig.split_once('(').map(|(name, _)| name)
10631        }
10632    }
10633    #[automatically_derived]
10634    impl alloy_sol_types::SolEventInterface for RewardClaimEvents {
10635        const NAME: &'static str = "RewardClaimEvents";
10636        const COUNT: usize = 9usize;
10637        fn decode_raw_log(
10638            topics: &[alloy_sol_types::Word],
10639            data: &[u8],
10640        ) -> alloy_sol_types::Result<Self> {
10641            match topics.first().copied() {
10642                Some(
10643                    <DailyLimitUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10644                ) => {
10645                    <DailyLimitUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10646                            topics,
10647                            data,
10648                        )
10649                        .map(Self::DailyLimitUpdated)
10650                }
10651                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10652                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10653                            topics,
10654                            data,
10655                        )
10656                        .map(Self::Initialized)
10657                }
10658                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10659                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
10660                        .map(Self::Paused)
10661                }
10662                Some(<RewardsClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10663                    <RewardsClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
10664                            topics,
10665                            data,
10666                        )
10667                        .map(Self::RewardsClaimed)
10668                }
10669                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10670                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
10671                            topics,
10672                            data,
10673                        )
10674                        .map(Self::RoleAdminChanged)
10675                }
10676                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10677                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
10678                            topics,
10679                            data,
10680                        )
10681                        .map(Self::RoleGranted)
10682                }
10683                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10684                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
10685                            topics,
10686                            data,
10687                        )
10688                        .map(Self::RoleRevoked)
10689                }
10690                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10691                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
10692                        .map(Self::Unpaused)
10693                }
10694                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10695                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
10696                        .map(Self::Upgraded)
10697                }
10698                _ => {
10699                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10700                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10701                        log: alloy_sol_types::private::Box::new(
10702                            alloy_sol_types::private::LogData::new_unchecked(
10703                                topics.to_vec(),
10704                                data.to_vec().into(),
10705                            ),
10706                        ),
10707                    })
10708                }
10709            }
10710        }
10711    }
10712    #[automatically_derived]
10713    impl alloy_sol_types::private::IntoLogData for RewardClaimEvents {
10714        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10715            match self {
10716                Self::DailyLimitUpdated(inner) => {
10717                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10718                }
10719                Self::Initialized(inner) => {
10720                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10721                }
10722                Self::Paused(inner) => {
10723                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10724                }
10725                Self::RewardsClaimed(inner) => {
10726                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10727                }
10728                Self::RoleAdminChanged(inner) => {
10729                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10730                }
10731                Self::RoleGranted(inner) => {
10732                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10733                }
10734                Self::RoleRevoked(inner) => {
10735                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10736                }
10737                Self::Unpaused(inner) => {
10738                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10739                }
10740                Self::Upgraded(inner) => {
10741                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10742                }
10743            }
10744        }
10745        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10746            match self {
10747                Self::DailyLimitUpdated(inner) => {
10748                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10749                }
10750                Self::Initialized(inner) => {
10751                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10752                }
10753                Self::Paused(inner) => {
10754                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10755                }
10756                Self::RewardsClaimed(inner) => {
10757                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10758                }
10759                Self::RoleAdminChanged(inner) => {
10760                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10761                }
10762                Self::RoleGranted(inner) => {
10763                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10764                }
10765                Self::RoleRevoked(inner) => {
10766                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10767                }
10768                Self::Unpaused(inner) => {
10769                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10770                }
10771                Self::Upgraded(inner) => {
10772                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10773                }
10774            }
10775        }
10776    }
10777    use alloy::contract as alloy_contract;
10778    /**Creates a new wrapper around an on-chain [`RewardClaim`](self) contract instance.
10779
10780See the [wrapper's documentation](`RewardClaimInstance`) for more details.*/
10781    #[inline]
10782    pub const fn new<
10783        P: alloy_contract::private::Provider<N>,
10784        N: alloy_contract::private::Network,
10785    >(
10786        address: alloy_sol_types::private::Address,
10787        __provider: P,
10788    ) -> RewardClaimInstance<P, N> {
10789        RewardClaimInstance::<P, N>::new(address, __provider)
10790    }
10791    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10792
10793Returns a new instance of the contract, if the deployment was successful.
10794
10795For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10796    #[inline]
10797    pub fn deploy<
10798        P: alloy_contract::private::Provider<N>,
10799        N: alloy_contract::private::Network,
10800    >(
10801        __provider: P,
10802    ) -> impl ::core::future::Future<
10803        Output = alloy_contract::Result<RewardClaimInstance<P, N>>,
10804    > {
10805        RewardClaimInstance::<P, N>::deploy(__provider)
10806    }
10807    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10808and constructor arguments, if any.
10809
10810This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10811the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10812    #[inline]
10813    pub fn deploy_builder<
10814        P: alloy_contract::private::Provider<N>,
10815        N: alloy_contract::private::Network,
10816    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
10817        RewardClaimInstance::<P, N>::deploy_builder(__provider)
10818    }
10819    /**A [`RewardClaim`](self) instance.
10820
10821Contains type-safe methods for interacting with an on-chain instance of the
10822[`RewardClaim`](self) contract located at a given `address`, using a given
10823provider `P`.
10824
10825If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10826documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10827be used to deploy a new instance of the contract.
10828
10829See the [module-level documentation](self) for all the available methods.*/
10830    #[derive(Clone)]
10831    pub struct RewardClaimInstance<P, N = alloy_contract::private::Ethereum> {
10832        address: alloy_sol_types::private::Address,
10833        provider: P,
10834        _network: ::core::marker::PhantomData<N>,
10835    }
10836    #[automatically_derived]
10837    impl<P, N> ::core::fmt::Debug for RewardClaimInstance<P, N> {
10838        #[inline]
10839        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10840            f.debug_tuple("RewardClaimInstance").field(&self.address).finish()
10841        }
10842    }
10843    /// Instantiation and getters/setters.
10844    impl<
10845        P: alloy_contract::private::Provider<N>,
10846        N: alloy_contract::private::Network,
10847    > RewardClaimInstance<P, N> {
10848        /**Creates a new wrapper around an on-chain [`RewardClaim`](self) contract instance.
10849
10850See the [wrapper's documentation](`RewardClaimInstance`) for more details.*/
10851        #[inline]
10852        pub const fn new(
10853            address: alloy_sol_types::private::Address,
10854            __provider: P,
10855        ) -> Self {
10856            Self {
10857                address,
10858                provider: __provider,
10859                _network: ::core::marker::PhantomData,
10860            }
10861        }
10862        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10863
10864Returns a new instance of the contract, if the deployment was successful.
10865
10866For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10867        #[inline]
10868        pub async fn deploy(
10869            __provider: P,
10870        ) -> alloy_contract::Result<RewardClaimInstance<P, N>> {
10871            let call_builder = Self::deploy_builder(__provider);
10872            let contract_address = call_builder.deploy().await?;
10873            Ok(Self::new(contract_address, call_builder.provider))
10874        }
10875        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10876and constructor arguments, if any.
10877
10878This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10879the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10880        #[inline]
10881        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
10882            alloy_contract::RawCallBuilder::new_raw_deploy(
10883                __provider,
10884                ::core::clone::Clone::clone(&BYTECODE),
10885            )
10886        }
10887        /// Returns a reference to the address.
10888        #[inline]
10889        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10890            &self.address
10891        }
10892        /// Sets the address.
10893        #[inline]
10894        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10895            self.address = address;
10896        }
10897        /// Sets the address and returns `self`.
10898        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10899            self.set_address(address);
10900            self
10901        }
10902        /// Returns a reference to the provider.
10903        #[inline]
10904        pub const fn provider(&self) -> &P {
10905            &self.provider
10906        }
10907    }
10908    impl<P: ::core::clone::Clone, N> RewardClaimInstance<&P, N> {
10909        /// Clones the provider and returns a new instance with the cloned provider.
10910        #[inline]
10911        pub fn with_cloned_provider(self) -> RewardClaimInstance<P, N> {
10912            RewardClaimInstance {
10913                address: self.address,
10914                provider: ::core::clone::Clone::clone(&self.provider),
10915                _network: ::core::marker::PhantomData,
10916            }
10917        }
10918    }
10919    /// Function calls.
10920    impl<
10921        P: alloy_contract::private::Provider<N>,
10922        N: alloy_contract::private::Network,
10923    > RewardClaimInstance<P, N> {
10924        /// Creates a new call builder using this contract instance's provider and address.
10925        ///
10926        /// Note that the call can be any function call, not just those defined in this
10927        /// contract. Prefer using the other methods for building type-safe contract calls.
10928        pub fn call_builder<C: alloy_sol_types::SolCall>(
10929            &self,
10930            call: &C,
10931        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
10932            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10933        }
10934        ///Creates a new call builder for the [`BPS_DENOMINATOR`] function.
10935        pub fn BPS_DENOMINATOR(
10936            &self,
10937        ) -> alloy_contract::SolCallBuilder<&P, BPS_DENOMINATORCall, N> {
10938            self.call_builder(&BPS_DENOMINATORCall)
10939        }
10940        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
10941        pub fn DEFAULT_ADMIN_ROLE(
10942            &self,
10943        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
10944            self.call_builder(&DEFAULT_ADMIN_ROLECall)
10945        }
10946        ///Creates a new call builder for the [`MAX_DAILY_LIMIT_BASIS_POINTS`] function.
10947        pub fn MAX_DAILY_LIMIT_BASIS_POINTS(
10948            &self,
10949        ) -> alloy_contract::SolCallBuilder<&P, MAX_DAILY_LIMIT_BASIS_POINTSCall, N> {
10950            self.call_builder(&MAX_DAILY_LIMIT_BASIS_POINTSCall)
10951        }
10952        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
10953        pub fn PAUSER_ROLE(
10954            &self,
10955        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
10956            self.call_builder(&PAUSER_ROLECall)
10957        }
10958        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
10959        pub fn UPGRADE_INTERFACE_VERSION(
10960            &self,
10961        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
10962            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
10963        }
10964        ///Creates a new call builder for the [`claimRewards`] function.
10965        pub fn claimRewards(
10966            &self,
10967            lifetimeRewards: alloy::sol_types::private::primitives::aliases::U256,
10968            authData: alloy::sol_types::private::Bytes,
10969        ) -> alloy_contract::SolCallBuilder<&P, claimRewardsCall, N> {
10970            self.call_builder(
10971                &claimRewardsCall {
10972                    lifetimeRewards,
10973                    authData,
10974                },
10975            )
10976        }
10977        ///Creates a new call builder for the [`claimedRewards`] function.
10978        pub fn claimedRewards(
10979            &self,
10980            claimer: alloy::sol_types::private::Address,
10981        ) -> alloy_contract::SolCallBuilder<&P, claimedRewardsCall, N> {
10982            self.call_builder(&claimedRewardsCall { claimer })
10983        }
10984        ///Creates a new call builder for the [`currentAdmin`] function.
10985        pub fn currentAdmin(
10986            &self,
10987        ) -> alloy_contract::SolCallBuilder<&P, currentAdminCall, N> {
10988            self.call_builder(&currentAdminCall)
10989        }
10990        ///Creates a new call builder for the [`dailyLimitWei`] function.
10991        pub fn dailyLimitWei(
10992            &self,
10993        ) -> alloy_contract::SolCallBuilder<&P, dailyLimitWeiCall, N> {
10994            self.call_builder(&dailyLimitWeiCall)
10995        }
10996        ///Creates a new call builder for the [`espToken`] function.
10997        pub fn espToken(&self) -> alloy_contract::SolCallBuilder<&P, espTokenCall, N> {
10998            self.call_builder(&espTokenCall)
10999        }
11000        ///Creates a new call builder for the [`getRoleAdmin`] function.
11001        pub fn getRoleAdmin(
11002            &self,
11003            role: alloy::sol_types::private::FixedBytes<32>,
11004        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
11005            self.call_builder(&getRoleAdminCall { role })
11006        }
11007        ///Creates a new call builder for the [`getVersion`] function.
11008        pub fn getVersion(
11009            &self,
11010        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
11011            self.call_builder(&getVersionCall)
11012        }
11013        ///Creates a new call builder for the [`grantRole`] function.
11014        pub fn grantRole(
11015            &self,
11016            role: alloy::sol_types::private::FixedBytes<32>,
11017            account: alloy::sol_types::private::Address,
11018        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
11019            self.call_builder(&grantRoleCall { role, account })
11020        }
11021        ///Creates a new call builder for the [`hasRole`] function.
11022        pub fn hasRole(
11023            &self,
11024            role: alloy::sol_types::private::FixedBytes<32>,
11025            account: alloy::sol_types::private::Address,
11026        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
11027            self.call_builder(&hasRoleCall { role, account })
11028        }
11029        ///Creates a new call builder for the [`initialize`] function.
11030        pub fn initialize(
11031            &self,
11032            _admin: alloy::sol_types::private::Address,
11033            _espToken: alloy::sol_types::private::Address,
11034            _lightClient: alloy::sol_types::private::Address,
11035            _pauser: alloy::sol_types::private::Address,
11036        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
11037            self.call_builder(
11038                &initializeCall {
11039                    _admin,
11040                    _espToken,
11041                    _lightClient,
11042                    _pauser,
11043                },
11044            )
11045        }
11046        ///Creates a new call builder for the [`lastSetDailyLimitBasisPoints`] function.
11047        pub fn lastSetDailyLimitBasisPoints(
11048            &self,
11049        ) -> alloy_contract::SolCallBuilder<&P, lastSetDailyLimitBasisPointsCall, N> {
11050            self.call_builder(&lastSetDailyLimitBasisPointsCall)
11051        }
11052        ///Creates a new call builder for the [`lightClient`] function.
11053        pub fn lightClient(
11054            &self,
11055        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
11056            self.call_builder(&lightClientCall)
11057        }
11058        ///Creates a new call builder for the [`pause`] function.
11059        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
11060            self.call_builder(&pauseCall)
11061        }
11062        ///Creates a new call builder for the [`paused`] function.
11063        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
11064            self.call_builder(&pausedCall)
11065        }
11066        ///Creates a new call builder for the [`proxiableUUID`] function.
11067        pub fn proxiableUUID(
11068            &self,
11069        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
11070            self.call_builder(&proxiableUUIDCall)
11071        }
11072        ///Creates a new call builder for the [`renounceRole`] function.
11073        pub fn renounceRole(
11074            &self,
11075            role: alloy::sol_types::private::FixedBytes<32>,
11076            callerConfirmation: alloy::sol_types::private::Address,
11077        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
11078            self.call_builder(
11079                &renounceRoleCall {
11080                    role,
11081                    callerConfirmation,
11082                },
11083            )
11084        }
11085        ///Creates a new call builder for the [`revokeRole`] function.
11086        pub fn revokeRole(
11087            &self,
11088            role: alloy::sol_types::private::FixedBytes<32>,
11089            account: alloy::sol_types::private::Address,
11090        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
11091            self.call_builder(&revokeRoleCall { role, account })
11092        }
11093        ///Creates a new call builder for the [`setDailyLimit`] function.
11094        pub fn setDailyLimit(
11095            &self,
11096            basisPoints: alloy::sol_types::private::primitives::aliases::U256,
11097        ) -> alloy_contract::SolCallBuilder<&P, setDailyLimitCall, N> {
11098            self.call_builder(&setDailyLimitCall { basisPoints })
11099        }
11100        ///Creates a new call builder for the [`supportsInterface`] function.
11101        pub fn supportsInterface(
11102            &self,
11103            interfaceId: alloy::sol_types::private::FixedBytes<4>,
11104        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
11105            self.call_builder(
11106                &supportsInterfaceCall {
11107                    interfaceId,
11108                },
11109            )
11110        }
11111        ///Creates a new call builder for the [`totalClaimed`] function.
11112        pub fn totalClaimed(
11113            &self,
11114        ) -> alloy_contract::SolCallBuilder<&P, totalClaimedCall, N> {
11115            self.call_builder(&totalClaimedCall)
11116        }
11117        ///Creates a new call builder for the [`unpause`] function.
11118        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
11119            self.call_builder(&unpauseCall)
11120        }
11121        ///Creates a new call builder for the [`upgradeToAndCall`] function.
11122        pub fn upgradeToAndCall(
11123            &self,
11124            newImplementation: alloy::sol_types::private::Address,
11125            data: alloy::sol_types::private::Bytes,
11126        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
11127            self.call_builder(
11128                &upgradeToAndCallCall {
11129                    newImplementation,
11130                    data,
11131                },
11132            )
11133        }
11134    }
11135    /// Event filters.
11136    impl<
11137        P: alloy_contract::private::Provider<N>,
11138        N: alloy_contract::private::Network,
11139    > RewardClaimInstance<P, N> {
11140        /// Creates a new event filter using this contract instance's provider and address.
11141        ///
11142        /// Note that the type can be any event, not just those defined in this contract.
11143        /// Prefer using the other methods for building type-safe event filters.
11144        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11145            &self,
11146        ) -> alloy_contract::Event<&P, E, N> {
11147            alloy_contract::Event::new_sol(&self.provider, &self.address)
11148        }
11149        ///Creates a new event filter for the [`DailyLimitUpdated`] event.
11150        pub fn DailyLimitUpdated_filter(
11151            &self,
11152        ) -> alloy_contract::Event<&P, DailyLimitUpdated, N> {
11153            self.event_filter::<DailyLimitUpdated>()
11154        }
11155        ///Creates a new event filter for the [`Initialized`] event.
11156        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
11157            self.event_filter::<Initialized>()
11158        }
11159        ///Creates a new event filter for the [`Paused`] event.
11160        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
11161            self.event_filter::<Paused>()
11162        }
11163        ///Creates a new event filter for the [`RewardsClaimed`] event.
11164        pub fn RewardsClaimed_filter(
11165            &self,
11166        ) -> alloy_contract::Event<&P, RewardsClaimed, N> {
11167            self.event_filter::<RewardsClaimed>()
11168        }
11169        ///Creates a new event filter for the [`RoleAdminChanged`] event.
11170        pub fn RoleAdminChanged_filter(
11171            &self,
11172        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
11173            self.event_filter::<RoleAdminChanged>()
11174        }
11175        ///Creates a new event filter for the [`RoleGranted`] event.
11176        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
11177            self.event_filter::<RoleGranted>()
11178        }
11179        ///Creates a new event filter for the [`RoleRevoked`] event.
11180        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
11181            self.event_filter::<RoleRevoked>()
11182        }
11183        ///Creates a new event filter for the [`Unpaused`] event.
11184        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
11185            self.event_filter::<Unpaused>()
11186        }
11187        ///Creates a new event filter for the [`Upgraded`] event.
11188        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
11189            self.event_filter::<Upgraded>()
11190        }
11191    }
11192}