eigenlayer_contract_deployer/bindings/core/
transparentupgradeableproxy.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use TransparentUpgradeableProxy::*;
3
4/**
5
6Generated by the following Solidity interface...
7```solidity
8interface TransparentUpgradeableProxy {
9    event AdminChanged(address previousAdmin, address newAdmin);
10    event BeaconUpgraded(address indexed beacon);
11    event Upgraded(address indexed implementation);
12
13    constructor(address _logic, address admin_, bytes _data) payable;
14
15    fallback() external payable;
16
17    receive() external payable;
18}
19```
20
21...which was generated by the following JSON ABI:
22```json
23[
24  {
25    "type": "constructor",
26    "inputs": [
27      {
28        "name": "_logic",
29        "type": "address",
30        "internalType": "address"
31      },
32      {
33        "name": "admin_",
34        "type": "address",
35        "internalType": "address"
36      },
37      {
38        "name": "_data",
39        "type": "bytes",
40        "internalType": "bytes"
41      }
42    ],
43    "stateMutability": "payable"
44  },
45  {
46    "type": "fallback",
47    "stateMutability": "payable"
48  },
49  {
50    "type": "receive",
51    "stateMutability": "payable"
52  },
53  {
54    "type": "event",
55    "name": "AdminChanged",
56    "inputs": [
57      {
58        "name": "previousAdmin",
59        "type": "address",
60        "indexed": false,
61        "internalType": "address"
62      },
63      {
64        "name": "newAdmin",
65        "type": "address",
66        "indexed": false,
67        "internalType": "address"
68      }
69    ],
70    "anonymous": false
71  },
72  {
73    "type": "event",
74    "name": "BeaconUpgraded",
75    "inputs": [
76      {
77        "name": "beacon",
78        "type": "address",
79        "indexed": true,
80        "internalType": "address"
81      }
82    ],
83    "anonymous": false
84  },
85  {
86    "type": "event",
87    "name": "Upgraded",
88    "inputs": [
89      {
90        "name": "implementation",
91        "type": "address",
92        "indexed": true,
93        "internalType": "address"
94      }
95    ],
96    "anonymous": false
97  }
98]
99```*/
100#[allow(
101    non_camel_case_types,
102    non_snake_case,
103    clippy::pub_underscore_fields,
104    clippy::style,
105    clippy::empty_structs_with_brackets
106)]
107pub mod TransparentUpgradeableProxy {
108    use super::*;
109    use alloy::sol_types as alloy_sol_types;
110    /// The creation / init bytecode of the contract.
111    ///
112    /// ```text
113    ///0x6080604052604051610dbd380380610dbd833981016040819052610022916103e5565b828161002f82825f610043565b5061003b90508261006e565b505050610502565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d765f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d9660279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d765f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b03168560405161029191906104b5565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104d0565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156103dd5781810151838201526020016103c5565b50505f910152565b5f5f5f606084860312156103f7575f5ffd5b61040084610394565b925061040e60208501610394565b60408501519092506001600160401b03811115610429575f5ffd5b8401601f81018613610439575f5ffd5b80516001600160401b03811115610452576104526103af565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610480576104806103af565b604052818152828201602001881015610497575f5ffd5b6104a88260208301602086016103c3565b8093505050509250925092565b5f82516104c68184602087016103c3565b9190910192915050565b602081525f82518060208401526104ee8160408501602087016103c3565b601f01601f19169190910160400192915050565b6108678061050f5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df838360405180606001604052806027815260200161080b6027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b03168560405161056691906107bd565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107d8565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5b838110156107b557818101518382015260200161079d565b50505f910152565b5f82516107ce81846020870161079b565b9190910192915050565b602081525f82518060208401526107f681604085016020870161079b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ea71d5d4adad243057ea896d7ff8e0177b3e9734d525fb9fd5ea489cce8251f364736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564
114    /// ```
115    #[rustfmt::skip]
116    #[allow(clippy::all)]
117    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
118        b"`\x80`@R`@Qa\r\xBD8\x03\x80a\r\xBD\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\xE5V[\x82\x81a\0/\x82\x82_a\0CV[Pa\0;\x90P\x82a\0nV[PPPa\x05\x02V[a\0L\x83a\0\xDBV[_\x82Q\x11\x80a\0XWP\x80[\x15a\0iWa\0g\x83\x83a\x01\x1AV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\0\xAD_Q` a\rv_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\0\xD8\x81a\x01FV[PV[a\0\xE4\x81a\x01\xE1V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[``a\x01?\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\r\x96`'\x919a\x02uV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xB0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x80_Q` a\rv_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\x90UPV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x01\xA7V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[``__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\x91\x91\x90a\x04\xB5V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x02\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\xCEV[``\x91P[P\x90\x92P\x90Pa\x02\xE0\x86\x83\x83\x87a\x02\xEAV[\x96\x95PPPPPPV[``\x83\x15a\x03XW\x82Q_\x03a\x03QW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03QW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x01\xA7V[P\x81a\x03bV[a\x03b\x83\x83a\x03jV[\x94\x93PPPPV[\x81Q\x15a\x03zW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\xD0V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xAAW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x03\xDDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x03\xC5V[PP_\x91\x01RV[___``\x84\x86\x03\x12\x15a\x03\xF7W__\xFD[a\x04\0\x84a\x03\x94V[\x92Pa\x04\x0E` \x85\x01a\x03\x94V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04)W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x049W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04RWa\x04Ra\x03\xAFV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04\x80Wa\x04\x80a\x03\xAFV[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04\x97W__\xFD[a\x04\xA8\x82` \x83\x01` \x86\x01a\x03\xC3V[\x80\x93PPPP\x92P\x92P\x92V[_\x82Qa\x04\xC6\x81\x84` \x87\x01a\x03\xC3V[\x91\x90\x91\x01\x92\x91PPV[` \x81R_\x82Q\x80` \x84\x01Ra\x04\xEE\x81`@\x85\x01` \x87\x01a\x03\xC3V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80a\x05\x0F_9_\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0\x1Fa\x01hV[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01^W```\x01`\x01`\xE0\x1B\x03\x19_5\x16cd\xD3\x18\r`\xE1\x1B\x81\x01a\0YWa\0Ra\x01\x9AV[\x91Pa\x01VV[cXp\x86\xBD`\xE1\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0yWa\0Ra\x01\xEDV[c\x07\r|i`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\x99Wa\0Ra\x021V[b\x1E\xB9o`\xE6\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xB8Wa\0Ra\x02aV[c\xA3\x9F%\xE5`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xD8Wa\0Ra\x02\xA0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01\xF3[a\x01fa\x02\xB3V[V[_\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[``a\x01\xA4a\x02\xC3V[_a\x01\xB26`\x04\x81\x84a\x06hV[\x81\x01\x90a\x01\xBF\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x02\xCDV[PP`@\x80Q` \x81\x01\x90\x91R_\x81R\x90V[``_\x80a\x01\xFE6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02\x0B\x91\x90a\x06\xD7V[\x91P\x91Pa\x02\x1B\x82\x82`\x01a\x02\xCDV[`@Q\x80` \x01`@R\x80_\x81RP\x92PPP\x90V[``a\x02;a\x02\xC3V[_a\x02I6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02V\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81a\x02\xF8V[``a\x02ka\x02\xC3V[_a\x02ta\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[``a\x02\xAAa\x02\xC3V[_a\x02ta\x03OV[a\x01fa\x02\xBEa\x03OV[a\x03]V[4\x15a\x01fW__\xFD[a\x02\xD6\x83a\x03{V[_\x82Q\x11\x80a\x02\xE2WP\x80[\x15a\x02\xF3Wa\x02\xF1\x83\x83a\x03\xBAV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03!a\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x03L\x81a\x03\xE6V[PV[_a\x03Xa\x04\x8FV[\x90P\x90V[6__7__6_\x84Z\xF4=__>\x80\x80\x15a\x03wW=_\xF3[=_\xFD[a\x03\x84\x81a\x04\xB6V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[``a\x03\xDF\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x05JV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x05#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04nV[``__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05f\x91\x90a\x07\xBDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x05\x9EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\xA3V[``\x91P[P\x91P\x91Pa\x05\xB4\x86\x83\x83\x87a\x05\xBEV[\x96\x95PPPPPPV[``\x83\x15a\x06,W\x82Q_\x03a\x06%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x06%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x01MV[P\x81a\x066V[a\x066\x83\x83a\x06>V[\x94\x93PPPPV[\x81Q\x15a\x06NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01M\x91\x90a\x07\xD8V[__\x85\x85\x11\x15a\x06vW__\xFD[\x83\x86\x11\x15a\x06\x82W__\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xA5W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\xBAW__\xFD[a\x03\xDF\x82a\x06\x8FV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[__`@\x83\x85\x03\x12\x15a\x06\xE8W__\xFD[a\x06\xF1\x83a\x06\x8FV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x0CW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x07\x1CW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x076Wa\x076a\x06\xC3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07eWa\x07ea\x06\xC3V[`@R\x81\x81R\x82\x82\x01` \x01\x87\x10\x15a\x07|W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x07\xB5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x9DV[PP_\x91\x01RV[_\x82Qa\x07\xCE\x81\x84` \x87\x01a\x07\x9BV[\x91\x90\x91\x01\x92\x91PPV[` \x81R_\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x9BV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xEAq\xD5\xD4\xAD\xAD$0W\xEA\x89m\x7F\xF8\xE0\x17{>\x974\xD5%\xFB\x9F\xD5\xEAH\x9C\xCE\x82Q\xF3dsolcC\0\x08\x1B\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call failed",
119    );
120    /// The runtime bytecode of the contract, as deployed on the network.
121    ///
122    /// ```text
123    ///0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df838360405180606001604052806027815260200161080b6027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b03168560405161056691906107bd565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107d8565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5b838110156107b557818101518382015260200161079d565b50505f910152565b5f82516107ce81846020870161079b565b9190910192915050565b602081525f82518060208401526107f681604085016020870161079b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ea71d5d4adad243057ea896d7ff8e0177b3e9734d525fb9fd5ea489cce8251f364736f6c634300081b0033
124    /// ```
125    #[rustfmt::skip]
126    #[allow(clippy::all)]
127    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
128        b"`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0\x1Fa\x01hV[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01^W```\x01`\x01`\xE0\x1B\x03\x19_5\x16cd\xD3\x18\r`\xE1\x1B\x81\x01a\0YWa\0Ra\x01\x9AV[\x91Pa\x01VV[cXp\x86\xBD`\xE1\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0yWa\0Ra\x01\xEDV[c\x07\r|i`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\x99Wa\0Ra\x021V[b\x1E\xB9o`\xE6\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xB8Wa\0Ra\x02aV[c\xA3\x9F%\xE5`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xD8Wa\0Ra\x02\xA0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01\xF3[a\x01fa\x02\xB3V[V[_\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[``a\x01\xA4a\x02\xC3V[_a\x01\xB26`\x04\x81\x84a\x06hV[\x81\x01\x90a\x01\xBF\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x02\xCDV[PP`@\x80Q` \x81\x01\x90\x91R_\x81R\x90V[``_\x80a\x01\xFE6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02\x0B\x91\x90a\x06\xD7V[\x91P\x91Pa\x02\x1B\x82\x82`\x01a\x02\xCDV[`@Q\x80` \x01`@R\x80_\x81RP\x92PPP\x90V[``a\x02;a\x02\xC3V[_a\x02I6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02V\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81a\x02\xF8V[``a\x02ka\x02\xC3V[_a\x02ta\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[``a\x02\xAAa\x02\xC3V[_a\x02ta\x03OV[a\x01fa\x02\xBEa\x03OV[a\x03]V[4\x15a\x01fW__\xFD[a\x02\xD6\x83a\x03{V[_\x82Q\x11\x80a\x02\xE2WP\x80[\x15a\x02\xF3Wa\x02\xF1\x83\x83a\x03\xBAV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03!a\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x03L\x81a\x03\xE6V[PV[_a\x03Xa\x04\x8FV[\x90P\x90V[6__7__6_\x84Z\xF4=__>\x80\x80\x15a\x03wW=_\xF3[=_\xFD[a\x03\x84\x81a\x04\xB6V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[``a\x03\xDF\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x05JV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x05#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04nV[``__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05f\x91\x90a\x07\xBDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x05\x9EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\xA3V[``\x91P[P\x91P\x91Pa\x05\xB4\x86\x83\x83\x87a\x05\xBEV[\x96\x95PPPPPPV[``\x83\x15a\x06,W\x82Q_\x03a\x06%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x06%W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x01MV[P\x81a\x066V[a\x066\x83\x83a\x06>V[\x94\x93PPPPV[\x81Q\x15a\x06NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01M\x91\x90a\x07\xD8V[__\x85\x85\x11\x15a\x06vW__\xFD[\x83\x86\x11\x15a\x06\x82W__\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xA5W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\xBAW__\xFD[a\x03\xDF\x82a\x06\x8FV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[__`@\x83\x85\x03\x12\x15a\x06\xE8W__\xFD[a\x06\xF1\x83a\x06\x8FV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x0CW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x07\x1CW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x076Wa\x076a\x06\xC3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07eWa\x07ea\x06\xC3V[`@R\x81\x81R\x82\x82\x01` \x01\x87\x10\x15a\x07|W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x07\xB5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x9DV[PP_\x91\x01RV[_\x82Qa\x07\xCE\x81\x84` \x87\x01a\x07\x9BV[\x91\x90\x91\x01\x92\x91PPV[` \x81R_\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x9BV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 \xEAq\xD5\xD4\xAD\xAD$0W\xEA\x89m\x7F\xF8\xE0\x17{>\x974\xD5%\xFB\x9F\xD5\xEAH\x9C\xCE\x82Q\xF3dsolcC\0\x08\x1B\x003",
129    );
130    #[derive(Default, Debug, PartialEq, Eq, Hash)]
131    /**Event with signature `AdminChanged(address,address)` and selector `0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f`.
132```solidity
133event AdminChanged(address previousAdmin, address newAdmin);
134```*/
135    #[allow(
136        non_camel_case_types,
137        non_snake_case,
138        clippy::pub_underscore_fields,
139        clippy::style
140    )]
141    #[derive(Clone)]
142    pub struct AdminChanged {
143        #[allow(missing_docs)]
144        pub previousAdmin: alloy::sol_types::private::Address,
145        #[allow(missing_docs)]
146        pub newAdmin: alloy::sol_types::private::Address,
147    }
148    #[allow(
149        non_camel_case_types,
150        non_snake_case,
151        clippy::pub_underscore_fields,
152        clippy::style
153    )]
154    const _: () = {
155        use alloy::sol_types as alloy_sol_types;
156        #[automatically_derived]
157        impl alloy_sol_types::SolEvent for AdminChanged {
158            type DataTuple<'a> = (
159                alloy::sol_types::sol_data::Address,
160                alloy::sol_types::sol_data::Address,
161            );
162            type DataToken<'a> = <Self::DataTuple<
163                'a,
164            > as alloy_sol_types::SolType>::Token<'a>;
165            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
166            const SIGNATURE: &'static str = "AdminChanged(address,address)";
167            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
168                126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8,
169                181u8, 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8,
170                66u8, 174u8, 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8,
171            ]);
172            const ANONYMOUS: bool = false;
173            #[allow(unused_variables)]
174            #[inline]
175            fn new(
176                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
177                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
178            ) -> Self {
179                Self {
180                    previousAdmin: data.0,
181                    newAdmin: data.1,
182                }
183            }
184            #[inline]
185            fn check_signature(
186                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
187            ) -> alloy_sol_types::Result<()> {
188                if topics.0 != Self::SIGNATURE_HASH {
189                    return Err(
190                        alloy_sol_types::Error::invalid_event_signature_hash(
191                            Self::SIGNATURE,
192                            topics.0,
193                            Self::SIGNATURE_HASH,
194                        ),
195                    );
196                }
197                Ok(())
198            }
199            #[inline]
200            fn tokenize_body(&self) -> Self::DataToken<'_> {
201                (
202                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
203                        &self.previousAdmin,
204                    ),
205                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
206                        &self.newAdmin,
207                    ),
208                )
209            }
210            #[inline]
211            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
212                (Self::SIGNATURE_HASH.into(),)
213            }
214            #[inline]
215            fn encode_topics_raw(
216                &self,
217                out: &mut [alloy_sol_types::abi::token::WordToken],
218            ) -> alloy_sol_types::Result<()> {
219                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
220                    return Err(alloy_sol_types::Error::Overrun);
221                }
222                out[0usize] = alloy_sol_types::abi::token::WordToken(
223                    Self::SIGNATURE_HASH,
224                );
225                Ok(())
226            }
227        }
228        #[automatically_derived]
229        impl alloy_sol_types::private::IntoLogData for AdminChanged {
230            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
231                From::from(self)
232            }
233            fn into_log_data(self) -> alloy_sol_types::private::LogData {
234                From::from(&self)
235            }
236        }
237        #[automatically_derived]
238        impl From<&AdminChanged> for alloy_sol_types::private::LogData {
239            #[inline]
240            fn from(this: &AdminChanged) -> alloy_sol_types::private::LogData {
241                alloy_sol_types::SolEvent::encode_log_data(this)
242            }
243        }
244    };
245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
246    /**Event with signature `BeaconUpgraded(address)` and selector `0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e`.
247```solidity
248event BeaconUpgraded(address indexed beacon);
249```*/
250    #[allow(
251        non_camel_case_types,
252        non_snake_case,
253        clippy::pub_underscore_fields,
254        clippy::style
255    )]
256    #[derive(Clone)]
257    pub struct BeaconUpgraded {
258        #[allow(missing_docs)]
259        pub beacon: alloy::sol_types::private::Address,
260    }
261    #[allow(
262        non_camel_case_types,
263        non_snake_case,
264        clippy::pub_underscore_fields,
265        clippy::style
266    )]
267    const _: () = {
268        use alloy::sol_types as alloy_sol_types;
269        #[automatically_derived]
270        impl alloy_sol_types::SolEvent for BeaconUpgraded {
271            type DataTuple<'a> = ();
272            type DataToken<'a> = <Self::DataTuple<
273                'a,
274            > as alloy_sol_types::SolType>::Token<'a>;
275            type TopicList = (
276                alloy_sol_types::sol_data::FixedBytes<32>,
277                alloy::sol_types::sol_data::Address,
278            );
279            const SIGNATURE: &'static str = "BeaconUpgraded(address)";
280            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
281                28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8,
282                241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8,
283                132u8, 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8,
284            ]);
285            const ANONYMOUS: bool = false;
286            #[allow(unused_variables)]
287            #[inline]
288            fn new(
289                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
290                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
291            ) -> Self {
292                Self { beacon: topics.1 }
293            }
294            #[inline]
295            fn check_signature(
296                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
297            ) -> alloy_sol_types::Result<()> {
298                if topics.0 != Self::SIGNATURE_HASH {
299                    return Err(
300                        alloy_sol_types::Error::invalid_event_signature_hash(
301                            Self::SIGNATURE,
302                            topics.0,
303                            Self::SIGNATURE_HASH,
304                        ),
305                    );
306                }
307                Ok(())
308            }
309            #[inline]
310            fn tokenize_body(&self) -> Self::DataToken<'_> {
311                ()
312            }
313            #[inline]
314            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
315                (Self::SIGNATURE_HASH.into(), self.beacon.clone())
316            }
317            #[inline]
318            fn encode_topics_raw(
319                &self,
320                out: &mut [alloy_sol_types::abi::token::WordToken],
321            ) -> alloy_sol_types::Result<()> {
322                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
323                    return Err(alloy_sol_types::Error::Overrun);
324                }
325                out[0usize] = alloy_sol_types::abi::token::WordToken(
326                    Self::SIGNATURE_HASH,
327                );
328                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
329                    &self.beacon,
330                );
331                Ok(())
332            }
333        }
334        #[automatically_derived]
335        impl alloy_sol_types::private::IntoLogData for BeaconUpgraded {
336            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
337                From::from(self)
338            }
339            fn into_log_data(self) -> alloy_sol_types::private::LogData {
340                From::from(&self)
341            }
342        }
343        #[automatically_derived]
344        impl From<&BeaconUpgraded> for alloy_sol_types::private::LogData {
345            #[inline]
346            fn from(this: &BeaconUpgraded) -> alloy_sol_types::private::LogData {
347                alloy_sol_types::SolEvent::encode_log_data(this)
348            }
349        }
350    };
351    #[derive(Default, Debug, PartialEq, Eq, Hash)]
352    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
353```solidity
354event Upgraded(address indexed implementation);
355```*/
356    #[allow(
357        non_camel_case_types,
358        non_snake_case,
359        clippy::pub_underscore_fields,
360        clippy::style
361    )]
362    #[derive(Clone)]
363    pub struct Upgraded {
364        #[allow(missing_docs)]
365        pub implementation: alloy::sol_types::private::Address,
366    }
367    #[allow(
368        non_camel_case_types,
369        non_snake_case,
370        clippy::pub_underscore_fields,
371        clippy::style
372    )]
373    const _: () = {
374        use alloy::sol_types as alloy_sol_types;
375        #[automatically_derived]
376        impl alloy_sol_types::SolEvent for Upgraded {
377            type DataTuple<'a> = ();
378            type DataToken<'a> = <Self::DataTuple<
379                'a,
380            > as alloy_sol_types::SolType>::Token<'a>;
381            type TopicList = (
382                alloy_sol_types::sol_data::FixedBytes<32>,
383                alloy::sol_types::sol_data::Address,
384            );
385            const SIGNATURE: &'static str = "Upgraded(address)";
386            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
387                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
388                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
389                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
390            ]);
391            const ANONYMOUS: bool = false;
392            #[allow(unused_variables)]
393            #[inline]
394            fn new(
395                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
396                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
397            ) -> Self {
398                Self { implementation: topics.1 }
399            }
400            #[inline]
401            fn check_signature(
402                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
403            ) -> alloy_sol_types::Result<()> {
404                if topics.0 != Self::SIGNATURE_HASH {
405                    return Err(
406                        alloy_sol_types::Error::invalid_event_signature_hash(
407                            Self::SIGNATURE,
408                            topics.0,
409                            Self::SIGNATURE_HASH,
410                        ),
411                    );
412                }
413                Ok(())
414            }
415            #[inline]
416            fn tokenize_body(&self) -> Self::DataToken<'_> {
417                ()
418            }
419            #[inline]
420            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
421                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
422            }
423            #[inline]
424            fn encode_topics_raw(
425                &self,
426                out: &mut [alloy_sol_types::abi::token::WordToken],
427            ) -> alloy_sol_types::Result<()> {
428                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
429                    return Err(alloy_sol_types::Error::Overrun);
430                }
431                out[0usize] = alloy_sol_types::abi::token::WordToken(
432                    Self::SIGNATURE_HASH,
433                );
434                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
435                    &self.implementation,
436                );
437                Ok(())
438            }
439        }
440        #[automatically_derived]
441        impl alloy_sol_types::private::IntoLogData for Upgraded {
442            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
443                From::from(self)
444            }
445            fn into_log_data(self) -> alloy_sol_types::private::LogData {
446                From::from(&self)
447            }
448        }
449        #[automatically_derived]
450        impl From<&Upgraded> for alloy_sol_types::private::LogData {
451            #[inline]
452            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
453                alloy_sol_types::SolEvent::encode_log_data(this)
454            }
455        }
456    };
457    /**Constructor`.
458```solidity
459constructor(address _logic, address admin_, bytes _data) payable;
460```*/
461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
462    #[derive(Clone)]
463    pub struct constructorCall {
464        #[allow(missing_docs)]
465        pub _logic: alloy::sol_types::private::Address,
466        #[allow(missing_docs)]
467        pub admin_: alloy::sol_types::private::Address,
468        #[allow(missing_docs)]
469        pub _data: alloy::sol_types::private::Bytes,
470    }
471    const _: () = {
472        use alloy::sol_types as alloy_sol_types;
473        {
474            #[doc(hidden)]
475            type UnderlyingSolTuple<'a> = (
476                alloy::sol_types::sol_data::Address,
477                alloy::sol_types::sol_data::Address,
478                alloy::sol_types::sol_data::Bytes,
479            );
480            #[doc(hidden)]
481            type UnderlyingRustTuple<'a> = (
482                alloy::sol_types::private::Address,
483                alloy::sol_types::private::Address,
484                alloy::sol_types::private::Bytes,
485            );
486            #[cfg(test)]
487            #[allow(dead_code, unreachable_patterns)]
488            fn _type_assertion(
489                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
490            ) {
491                match _t {
492                    alloy_sol_types::private::AssertTypeEq::<
493                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
494                    >(_) => {}
495                }
496            }
497            #[automatically_derived]
498            #[doc(hidden)]
499            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
500                fn from(value: constructorCall) -> Self {
501                    (value._logic, value.admin_, value._data)
502                }
503            }
504            #[automatically_derived]
505            #[doc(hidden)]
506            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
507                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
508                    Self {
509                        _logic: tuple.0,
510                        admin_: tuple.1,
511                        _data: tuple.2,
512                    }
513                }
514            }
515        }
516        #[automatically_derived]
517        impl alloy_sol_types::SolConstructor for constructorCall {
518            type Parameters<'a> = (
519                alloy::sol_types::sol_data::Address,
520                alloy::sol_types::sol_data::Address,
521                alloy::sol_types::sol_data::Bytes,
522            );
523            type Token<'a> = <Self::Parameters<
524                'a,
525            > as alloy_sol_types::SolType>::Token<'a>;
526            #[inline]
527            fn new<'a>(
528                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
529            ) -> Self {
530                tuple.into()
531            }
532            #[inline]
533            fn tokenize(&self) -> Self::Token<'_> {
534                (
535                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
536                        &self._logic,
537                    ),
538                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
539                        &self.admin_,
540                    ),
541                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
542                        &self._data,
543                    ),
544                )
545            }
546        }
547    };
548    ///Container for all the [`TransparentUpgradeableProxy`](self) events.
549    #[derive(Debug, PartialEq, Eq, Hash)]
550    pub enum TransparentUpgradeableProxyEvents {
551        #[allow(missing_docs)]
552        AdminChanged(AdminChanged),
553        #[allow(missing_docs)]
554        BeaconUpgraded(BeaconUpgraded),
555        #[allow(missing_docs)]
556        Upgraded(Upgraded),
557    }
558    #[automatically_derived]
559    impl TransparentUpgradeableProxyEvents {
560        /// All the selectors of this enum.
561        ///
562        /// Note that the selectors might not be in the same order as the variants.
563        /// No guarantees are made about the order of the selectors.
564        ///
565        /// Prefer using `SolInterface` methods instead.
566        pub const SELECTORS: &'static [[u8; 32usize]] = &[
567            [
568                28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8,
569                241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8,
570                132u8, 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8,
571            ],
572            [
573                126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8,
574                181u8, 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8,
575                66u8, 174u8, 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8,
576            ],
577            [
578                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
579                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
580                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
581            ],
582        ];
583    }
584    #[automatically_derived]
585    impl alloy_sol_types::SolEventInterface for TransparentUpgradeableProxyEvents {
586        const NAME: &'static str = "TransparentUpgradeableProxyEvents";
587        const COUNT: usize = 3usize;
588        fn decode_raw_log(
589            topics: &[alloy_sol_types::Word],
590            data: &[u8],
591            validate: bool,
592        ) -> alloy_sol_types::Result<Self> {
593            match topics.first().copied() {
594                Some(<AdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
595                    <AdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
596                            topics,
597                            data,
598                            validate,
599                        )
600                        .map(Self::AdminChanged)
601                }
602                Some(<BeaconUpgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
603                    <BeaconUpgraded as alloy_sol_types::SolEvent>::decode_raw_log(
604                            topics,
605                            data,
606                            validate,
607                        )
608                        .map(Self::BeaconUpgraded)
609                }
610                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
611                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
612                            topics,
613                            data,
614                            validate,
615                        )
616                        .map(Self::Upgraded)
617                }
618                _ => {
619                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
620                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
621                        log: alloy_sol_types::private::Box::new(
622                            alloy_sol_types::private::LogData::new_unchecked(
623                                topics.to_vec(),
624                                data.to_vec().into(),
625                            ),
626                        ),
627                    })
628                }
629            }
630        }
631    }
632    #[automatically_derived]
633    impl alloy_sol_types::private::IntoLogData for TransparentUpgradeableProxyEvents {
634        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
635            match self {
636                Self::AdminChanged(inner) => {
637                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
638                }
639                Self::BeaconUpgraded(inner) => {
640                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
641                }
642                Self::Upgraded(inner) => {
643                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
644                }
645            }
646        }
647        fn into_log_data(self) -> alloy_sol_types::private::LogData {
648            match self {
649                Self::AdminChanged(inner) => {
650                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
651                }
652                Self::BeaconUpgraded(inner) => {
653                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
654                }
655                Self::Upgraded(inner) => {
656                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
657                }
658            }
659        }
660    }
661    use alloy::contract as alloy_contract;
662    /**Creates a new wrapper around an on-chain [`TransparentUpgradeableProxy`](self) contract instance.
663
664See the [wrapper's documentation](`TransparentUpgradeableProxyInstance`) for more details.*/
665    #[inline]
666    pub const fn new<
667        T: alloy_contract::private::Transport + ::core::clone::Clone,
668        P: alloy_contract::private::Provider<T, N>,
669        N: alloy_contract::private::Network,
670    >(
671        address: alloy_sol_types::private::Address,
672        provider: P,
673    ) -> TransparentUpgradeableProxyInstance<T, P, N> {
674        TransparentUpgradeableProxyInstance::<T, P, N>::new(address, provider)
675    }
676    /**Deploys this contract using the given `provider` and constructor arguments, if any.
677
678Returns a new instance of the contract, if the deployment was successful.
679
680For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
681    #[inline]
682    pub fn deploy<
683        T: alloy_contract::private::Transport + ::core::clone::Clone,
684        P: alloy_contract::private::Provider<T, N>,
685        N: alloy_contract::private::Network,
686    >(
687        provider: P,
688        _logic: alloy::sol_types::private::Address,
689        admin_: alloy::sol_types::private::Address,
690        _data: alloy::sol_types::private::Bytes,
691    ) -> impl ::core::future::Future<
692        Output = alloy_contract::Result<TransparentUpgradeableProxyInstance<T, P, N>>,
693    > {
694        TransparentUpgradeableProxyInstance::<
695            T,
696            P,
697            N,
698        >::deploy(provider, _logic, admin_, _data)
699    }
700    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
701and constructor arguments, if any.
702
703This is a simple wrapper around creating a `RawCallBuilder` with the data set to
704the bytecode concatenated with the constructor's ABI-encoded arguments.*/
705    #[inline]
706    pub fn deploy_builder<
707        T: alloy_contract::private::Transport + ::core::clone::Clone,
708        P: alloy_contract::private::Provider<T, N>,
709        N: alloy_contract::private::Network,
710    >(
711        provider: P,
712        _logic: alloy::sol_types::private::Address,
713        admin_: alloy::sol_types::private::Address,
714        _data: alloy::sol_types::private::Bytes,
715    ) -> alloy_contract::RawCallBuilder<T, P, N> {
716        TransparentUpgradeableProxyInstance::<
717            T,
718            P,
719            N,
720        >::deploy_builder(provider, _logic, admin_, _data)
721    }
722    /**A [`TransparentUpgradeableProxy`](self) instance.
723
724Contains type-safe methods for interacting with an on-chain instance of the
725[`TransparentUpgradeableProxy`](self) contract located at a given `address`, using a given
726provider `P`.
727
728If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
729documentation on how to provide it), the `deploy` and `deploy_builder` methods can
730be used to deploy a new instance of the contract.
731
732See the [module-level documentation](self) for all the available methods.*/
733    #[derive(Clone)]
734    pub struct TransparentUpgradeableProxyInstance<
735        T,
736        P,
737        N = alloy_contract::private::Ethereum,
738    > {
739        address: alloy_sol_types::private::Address,
740        provider: P,
741        _network_transport: ::core::marker::PhantomData<(N, T)>,
742    }
743    #[automatically_derived]
744    impl<T, P, N> ::core::fmt::Debug for TransparentUpgradeableProxyInstance<T, P, N> {
745        #[inline]
746        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
747            f.debug_tuple("TransparentUpgradeableProxyInstance")
748                .field(&self.address)
749                .finish()
750        }
751    }
752    /// Instantiation and getters/setters.
753    #[automatically_derived]
754    impl<
755        T: alloy_contract::private::Transport + ::core::clone::Clone,
756        P: alloy_contract::private::Provider<T, N>,
757        N: alloy_contract::private::Network,
758    > TransparentUpgradeableProxyInstance<T, P, N> {
759        /**Creates a new wrapper around an on-chain [`TransparentUpgradeableProxy`](self) contract instance.
760
761See the [wrapper's documentation](`TransparentUpgradeableProxyInstance`) for more details.*/
762        #[inline]
763        pub const fn new(
764            address: alloy_sol_types::private::Address,
765            provider: P,
766        ) -> Self {
767            Self {
768                address,
769                provider,
770                _network_transport: ::core::marker::PhantomData,
771            }
772        }
773        /**Deploys this contract using the given `provider` and constructor arguments, if any.
774
775Returns a new instance of the contract, if the deployment was successful.
776
777For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
778        #[inline]
779        pub async fn deploy(
780            provider: P,
781            _logic: alloy::sol_types::private::Address,
782            admin_: alloy::sol_types::private::Address,
783            _data: alloy::sol_types::private::Bytes,
784        ) -> alloy_contract::Result<TransparentUpgradeableProxyInstance<T, P, N>> {
785            let call_builder = Self::deploy_builder(provider, _logic, admin_, _data);
786            let contract_address = call_builder.deploy().await?;
787            Ok(Self::new(contract_address, call_builder.provider))
788        }
789        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
790and constructor arguments, if any.
791
792This is a simple wrapper around creating a `RawCallBuilder` with the data set to
793the bytecode concatenated with the constructor's ABI-encoded arguments.*/
794        #[inline]
795        pub fn deploy_builder(
796            provider: P,
797            _logic: alloy::sol_types::private::Address,
798            admin_: alloy::sol_types::private::Address,
799            _data: alloy::sol_types::private::Bytes,
800        ) -> alloy_contract::RawCallBuilder<T, P, N> {
801            alloy_contract::RawCallBuilder::new_raw_deploy(
802                provider,
803                [
804                    &BYTECODE[..],
805                    &alloy_sol_types::SolConstructor::abi_encode(
806                        &constructorCall {
807                            _logic,
808                            admin_,
809                            _data,
810                        },
811                    )[..],
812                ]
813                    .concat()
814                    .into(),
815            )
816        }
817        /// Returns a reference to the address.
818        #[inline]
819        pub const fn address(&self) -> &alloy_sol_types::private::Address {
820            &self.address
821        }
822        /// Sets the address.
823        #[inline]
824        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
825            self.address = address;
826        }
827        /// Sets the address and returns `self`.
828        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
829            self.set_address(address);
830            self
831        }
832        /// Returns a reference to the provider.
833        #[inline]
834        pub const fn provider(&self) -> &P {
835            &self.provider
836        }
837    }
838    impl<T, P: ::core::clone::Clone, N> TransparentUpgradeableProxyInstance<T, &P, N> {
839        /// Clones the provider and returns a new instance with the cloned provider.
840        #[inline]
841        pub fn with_cloned_provider(
842            self,
843        ) -> TransparentUpgradeableProxyInstance<T, P, N> {
844            TransparentUpgradeableProxyInstance {
845                address: self.address,
846                provider: ::core::clone::Clone::clone(&self.provider),
847                _network_transport: ::core::marker::PhantomData,
848            }
849        }
850    }
851    /// Function calls.
852    #[automatically_derived]
853    impl<
854        T: alloy_contract::private::Transport + ::core::clone::Clone,
855        P: alloy_contract::private::Provider<T, N>,
856        N: alloy_contract::private::Network,
857    > TransparentUpgradeableProxyInstance<T, P, N> {
858        /// Creates a new call builder using this contract instance's provider and address.
859        ///
860        /// Note that the call can be any function call, not just those defined in this
861        /// contract. Prefer using the other methods for building type-safe contract calls.
862        pub fn call_builder<C: alloy_sol_types::SolCall>(
863            &self,
864            call: &C,
865        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
866            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
867        }
868    }
869    /// Event filters.
870    #[automatically_derived]
871    impl<
872        T: alloy_contract::private::Transport + ::core::clone::Clone,
873        P: alloy_contract::private::Provider<T, N>,
874        N: alloy_contract::private::Network,
875    > TransparentUpgradeableProxyInstance<T, P, N> {
876        /// Creates a new event filter using this contract instance's provider and address.
877        ///
878        /// Note that the type can be any event, not just those defined in this contract.
879        /// Prefer using the other methods for building type-safe event filters.
880        pub fn event_filter<E: alloy_sol_types::SolEvent>(
881            &self,
882        ) -> alloy_contract::Event<T, &P, E, N> {
883            alloy_contract::Event::new_sol(&self.provider, &self.address)
884        }
885        ///Creates a new event filter for the [`AdminChanged`] event.
886        pub fn AdminChanged_filter(
887            &self,
888        ) -> alloy_contract::Event<T, &P, AdminChanged, N> {
889            self.event_filter::<AdminChanged>()
890        }
891        ///Creates a new event filter for the [`BeaconUpgraded`] event.
892        pub fn BeaconUpgraded_filter(
893            &self,
894        ) -> alloy_contract::Event<T, &P, BeaconUpgraded, N> {
895            self.event_filter::<BeaconUpgraded>()
896        }
897        ///Creates a new event filter for the [`Upgraded`] event.
898        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
899            self.event_filter::<Upgraded>()
900        }
901    }
902}