hyperdrive_wrappers/wrappers/
erc4626_target0_deployer.rs

1pub use erc4626_target_0_deployer::*;
2/// This module was auto-generated with ethers-rs Abigen.
3/// More information at: <https://github.com/gakonst/ethers-rs>
4#[allow(
5    clippy::enum_variant_names,
6    clippy::too_many_arguments,
7    clippy::upper_case_acronyms,
8    clippy::type_complexity,
9    dead_code,
10    non_camel_case_types,
11)]
12pub mod erc4626_target_0_deployer {
13    #[allow(deprecated)]
14    fn __abi() -> ::ethers::core::abi::Abi {
15        ::ethers::core::abi::ethabi::Contract {
16            constructor: ::core::option::Option::None,
17            functions: ::core::convert::From::from([
18                (
19                    ::std::borrow::ToOwned::to_owned("deployTarget"),
20                    ::std::vec![
21                        ::ethers::core::abi::ethabi::Function {
22                            name: ::std::borrow::ToOwned::to_owned("deployTarget"),
23                            inputs: ::std::vec![
24                                ::ethers::core::abi::ethabi::Param {
25                                    name: ::std::borrow::ToOwned::to_owned("_config"),
26                                    kind: ::ethers::core::abi::ethabi::ParamType::Tuple(
27                                        ::std::vec![
28                                            ::ethers::core::abi::ethabi::ParamType::Address,
29                                            ::ethers::core::abi::ethabi::ParamType::Address,
30                                            ::ethers::core::abi::ethabi::ParamType::Address,
31                                            ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize),
32                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
33                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
34                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
35                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
36                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
37                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
38                                            ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
39                                            ::ethers::core::abi::ethabi::ParamType::Address,
40                                            ::ethers::core::abi::ethabi::ParamType::Address,
41                                            ::ethers::core::abi::ethabi::ParamType::Address,
42                                            ::ethers::core::abi::ethabi::ParamType::Address,
43                                            ::ethers::core::abi::ethabi::ParamType::Tuple(
44                                                ::std::vec![
45                                                    ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
46                                                    ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
47                                                    ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
48                                                    ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
49                                                ],
50                                            ),
51                                        ],
52                                    ),
53                                    internal_type: ::core::option::Option::Some(
54                                        ::std::borrow::ToOwned::to_owned(
55                                            "struct IHyperdrive.PoolConfig",
56                                        ),
57                                    ),
58                                },
59                                ::ethers::core::abi::ethabi::Param {
60                                    name: ::std::string::String::new(),
61                                    kind: ::ethers::core::abi::ethabi::ParamType::Bytes,
62                                    internal_type: ::core::option::Option::Some(
63                                        ::std::borrow::ToOwned::to_owned("bytes"),
64                                    ),
65                                },
66                                ::ethers::core::abi::ethabi::Param {
67                                    name: ::std::borrow::ToOwned::to_owned("_salt"),
68                                    kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(
69                                        32usize,
70                                    ),
71                                    internal_type: ::core::option::Option::Some(
72                                        ::std::borrow::ToOwned::to_owned("bytes32"),
73                                    ),
74                                },
75                            ],
76                            outputs: ::std::vec![
77                                ::ethers::core::abi::ethabi::Param {
78                                    name: ::std::string::String::new(),
79                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
80                                    internal_type: ::core::option::Option::Some(
81                                        ::std::borrow::ToOwned::to_owned("address"),
82                                    ),
83                                },
84                            ],
85                            constant: ::core::option::Option::None,
86                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
87                        },
88                    ],
89                ),
90            ]),
91            events: ::std::collections::BTreeMap::new(),
92            errors: ::std::collections::BTreeMap::new(),
93            receive: false,
94            fallback: false,
95        }
96    }
97    ///The parsed JSON ABI of the contract.
98    pub static ERC4626TARGET0DEPLOYER_ABI: ::ethers::contract::Lazy<
99        ::ethers::core::abi::Abi,
100    > = ::ethers::contract::Lazy::new(__abi);
101    pub struct ERC4626Target0Deployer<M>(::ethers::contract::Contract<M>);
102    impl<M> ::core::clone::Clone for ERC4626Target0Deployer<M> {
103        fn clone(&self) -> Self {
104            Self(::core::clone::Clone::clone(&self.0))
105        }
106    }
107    impl<M> ::core::ops::Deref for ERC4626Target0Deployer<M> {
108        type Target = ::ethers::contract::Contract<M>;
109        fn deref(&self) -> &Self::Target {
110            &self.0
111        }
112    }
113    impl<M> ::core::ops::DerefMut for ERC4626Target0Deployer<M> {
114        fn deref_mut(&mut self) -> &mut Self::Target {
115            &mut self.0
116        }
117    }
118    impl<M> ::core::fmt::Debug for ERC4626Target0Deployer<M> {
119        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
120            f.debug_tuple(::core::stringify!(ERC4626Target0Deployer))
121                .field(&self.address())
122                .finish()
123        }
124    }
125    impl<M: ::ethers::providers::Middleware> ERC4626Target0Deployer<M> {
126        /// Creates a new contract instance with the specified `ethers` client at
127        /// `address`. The contract derefs to a `ethers::Contract` object.
128        pub fn new<T: Into<::ethers::core::types::Address>>(
129            address: T,
130            client: ::std::sync::Arc<M>,
131        ) -> Self {
132            Self(
133                ::ethers::contract::Contract::new(
134                    address.into(),
135                    ERC4626TARGET0DEPLOYER_ABI.clone(),
136                    client,
137                ),
138            )
139        }
140        ///Calls the contract's `deployTarget` (0x6b323707) function
141        pub fn deploy_target(
142            &self,
143            config: PoolConfig,
144            p1: ::ethers::core::types::Bytes,
145            salt: [u8; 32],
146        ) -> ::ethers::contract::builders::ContractCall<
147            M,
148            ::ethers::core::types::Address,
149        > {
150            self.0
151                .method_hash([107, 50, 55, 7], (config, p1, salt))
152                .expect("method not found (this should never happen)")
153        }
154    }
155    impl<M: ::ethers::providers::Middleware> From<::ethers::contract::Contract<M>>
156    for ERC4626Target0Deployer<M> {
157        fn from(contract: ::ethers::contract::Contract<M>) -> Self {
158            Self::new(contract.address(), contract.client())
159        }
160    }
161    ///Container type for all input parameters for the `deployTarget` function with signature `deployTarget((address,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address,address,address,address,(uint256,uint256,uint256,uint256)),bytes,bytes32)` and selector `0x6b323707`
162    #[derive(
163        Clone,
164        ::ethers::contract::EthCall,
165        ::ethers::contract::EthDisplay,
166        serde::Serialize,
167        serde::Deserialize,
168    )]
169    #[ethcall(
170        name = "deployTarget",
171        abi = "deployTarget((address,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address,address,address,address,(uint256,uint256,uint256,uint256)),bytes,bytes32)"
172    )]
173    pub struct DeployTargetCall {
174        pub config: PoolConfig,
175        pub p1: ::ethers::core::types::Bytes,
176        pub salt: [u8; 32],
177    }
178    ///Container type for all return fields from the `deployTarget` function with signature `deployTarget((address,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address,address,address,address,(uint256,uint256,uint256,uint256)),bytes,bytes32)` and selector `0x6b323707`
179    #[derive(
180        Clone,
181        ::ethers::contract::EthAbiType,
182        ::ethers::contract::EthAbiCodec,
183        serde::Serialize,
184        serde::Deserialize,
185        Default,
186        Debug,
187        PartialEq,
188        Eq,
189        Hash
190    )]
191    pub struct DeployTargetReturn(pub ::ethers::core::types::Address);
192    ///`Fees(uint256,uint256,uint256,uint256)`
193    #[derive(
194        Clone,
195        ::ethers::contract::EthAbiType,
196        ::ethers::contract::EthAbiCodec,
197        serde::Serialize,
198        serde::Deserialize,
199        Default,
200        Debug,
201        PartialEq,
202        Eq,
203        Hash
204    )]
205    pub struct Fees {
206        pub curve: ::ethers::core::types::U256,
207        pub flat: ::ethers::core::types::U256,
208        pub governance_lp: ::ethers::core::types::U256,
209        pub governance_zombie: ::ethers::core::types::U256,
210    }
211    ///`PoolConfig(address,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address,address,address,address,(uint256,uint256,uint256,uint256))`
212    #[derive(
213        Clone,
214        ::ethers::contract::EthAbiType,
215        ::ethers::contract::EthAbiCodec,
216        serde::Serialize,
217        serde::Deserialize,
218        Default,
219        Debug,
220        PartialEq,
221        Eq,
222        Hash
223    )]
224    pub struct PoolConfig {
225        pub base_token: ::ethers::core::types::Address,
226        pub vault_shares_token: ::ethers::core::types::Address,
227        pub linker_factory: ::ethers::core::types::Address,
228        pub linker_code_hash: [u8; 32],
229        pub initial_vault_share_price: ::ethers::core::types::U256,
230        pub minimum_share_reserves: ::ethers::core::types::U256,
231        pub minimum_transaction_amount: ::ethers::core::types::U256,
232        pub circuit_breaker_delta: ::ethers::core::types::U256,
233        pub position_duration: ::ethers::core::types::U256,
234        pub checkpoint_duration: ::ethers::core::types::U256,
235        pub time_stretch: ::ethers::core::types::U256,
236        pub governance: ::ethers::core::types::Address,
237        pub fee_collector: ::ethers::core::types::Address,
238        pub sweep_collector: ::ethers::core::types::Address,
239        pub checkpoint_rewarder: ::ethers::core::types::Address,
240        pub fees: Fees,
241    }
242}
243
244pub struct ERC4626Target0DeployerLibs {
245    pub lp_math: ::ethers::types::Address,
246}
247
248impl<M: ::ethers::providers::Middleware> ERC4626Target0Deployer<M> {
249    pub fn link_and_deploy<T: ::ethers::core::abi::Tokenize>(
250        client: ::std::sync::Arc<M>,
251        constructor_args: T,
252        libs: ERC4626Target0DeployerLibs,
253    ) -> ::core::result::Result<
254        ::ethers::contract::builders::ContractDeployer<M, Self>,
255        ::ethers::contract::ContractError<M>,
256    > {
257        let factory = crate::linked_factory::create(
258            ERC4626TARGET0DEPLOYER_ABI.clone(),
259            "0x608060405234801561001057600080fd5b50613fb0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636b32370714610030575b600080fd5b61004361003e366004610227565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b604080513360208201529081018290526000906060016040516020818303038152906040528051906020012084604051610098906100cb565b6100a2919061036f565b8190604051809103906000f59050801580156100c2573d6000803e3d6000fd5b50949350505050565b613ae68061049583390190565b634e487b7160e01b600052604160045260246000fd5b604051610200810167ffffffffffffffff81118282101715610112576101126100d8565b60405290565b80356001600160a01b038116811461012f57600080fd5b919050565b60006080828403121561014657600080fd5b6040516080810181811067ffffffffffffffff82111715610169576101696100d8565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f8301126101ab57600080fd5b813567ffffffffffffffff808211156101c6576101c66100d8565b604051601f8301601f19908116603f011681019082821181831017156101ee576101ee6100d8565b8160405283815286602085880101111561020757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008385036102a081121561023e57600080fd5b6102608082121561024e57600080fd5b6102566100ee565b915061026186610118565b825261026f60208701610118565b602083015261028060408701610118565b6040830152606086013560608301526080860135608083015260a086013560a083015260c086013560c083015260e086013560e08301526101008087013581840152506101208087013581840152506101408087013581840152506101606102e9818801610118565b908301526101806102fb878201610118565b908301526101a061030d878201610118565b908301526101c061031f878201610118565b908301526101e061033288888301610134565b9083015290935084013567ffffffffffffffff81111561035157600080fd5b61035d8682870161019a565b92505061028084013590509250925092565b81516001600160a01b031681526102608101602083015161039b60208401826001600160a01b03169052565b5060408301516103b660408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151610428828501826001600160a01b03169052565b5050610180838101516001600160a01b03908116918401919091526101a0808501518216908401526101c080850151909116908301526101e09283015180519383019390935260208301516102008301526040830151610220830152606090920151610240909101529056fe6102606040523480156200001257600080fd5b5060405162003ae638038062003ae6833981016040819052620000359162000202565b600160005580516001600160a01b039081166080908152602080840151831660a0908152918401516101a0908152918401516101c090815260c0808601516101e090815260e0808801516102005261012080890151909352610100808901519091526101408089015190915290870180515190925281519093015190925281516040908101516101609081529251606090810151610180908152918701518616610220528601516102405291850151600980546001600160a01b031990811692871692909217905591850151600a8054841691861691909117905591840151600b80548316918516919091179055920151600c8054909316911617905562000315565b60405161020081016001600160401b03811182821017156200016a57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200018857600080fd5b919050565b600060808284031215620001a057600080fd5b604051608081016001600160401b0381118282101715620001d157634e487b7160e01b600052604160045260246000fd5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b600061026082840312156200021657600080fd5b6200022062000138565b6200022b8362000170565b81526200023b6020840162000170565b60208201526200024e6040840162000170565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120808401518183015250610140808401518183015250610160620002b981850162000170565b90820152610180620002cd84820162000170565b908201526101a0620002e184820162000170565b908201526101c0620002f584820162000170565b908201526101e06200030a858583016200018d565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516136a76200043f60003960008181610dc40152611e78015260008181610d9d0152611e3b01526000610e64015260008181610e3e015261202b015260008181610e180152612005015260008181610dee0152611fdf01526000610fa001526000610f7b01526000610f5601526000610f33015260008181610ed80152612051015260008181610e8a0152818161113d015261263a015260008181610eb101526128c901526000818161066001528181610d7101528181611b49015281816122e60152818161231201528181612815015261289a01526000818161079001528181610d4c01526110d601526136a76000f3fe608060405234801561001057600080fd5b50600436106102475760003560e01c80637180c8ca1161013b578063becee9c3116100b8578063d81657431161007c578063d816574314610530578063e44808bc14610545578063e4af29d114610558578063e985e9c51461056b578063fba560081461057e57600080fd5b8063becee9c3146104da578063c55dae63146104fa578063c69e16ad14610502578063c6e6f5921461050a578063cf210e651461051d57600080fd5b8063a5107626116100ff578063a510762614610479578063ab033ea91461048c578063b0d965801461049f578063b88fed9f146104b4578063bd85b039146104c757600080fd5b80637180c8ca1461041a5780637ecebe001461042d5780639cd241af14610440578063a22cb46514610453578063a42dce801461046657600080fd5b806321ff32a9116101c957806346fbf68e1161018d57806346fbf68e146103b45780634e41a1fb146103d75780634ed2d6ac146103ea57806354fd4d50146103fd57806360246c881461040557600080fd5b806321ff32a91461034b578063313ce5671461036c5780633656eec2146103865780633a98ef39146103995780633e691db9146103a157600080fd5b80630a4e1493116102105780630a4e1493146102ad57806314e5f07b146102cd57806317fad7fc146102e05780631c0f12b6146102f357806320fc48811461030657600080fd5b8062ad800c1461024c57806301681a621461027557806302329a291461028a57806304baa00b1461029d57806306fdde03146102a5575b600080fd5b61025f61025a366004612b1a565b6105ad565b60405161026c9190612b83565b60405180910390f35b610288610283366004612bab565b6105e4565b005b610288610298366004612bd6565b6105f0565b61025f6105f9565b61025f61063b565b6102b5610652565b6040516001600160a01b03909116815260200161026c565b6102886102db366004612c02565b610692565b6102886102ee366004612cdd565b6106ae565b610288610301366004612d72565b6106c4565b610319610314366004612b1a565b6106d7565b6040805182516001600160801b039081168252602080850151821690830152928201519092169082015260600161026c565b61035e610359366004612dba565b610743565b60405190815260200161026c565b610374610789565b60405160ff909116815260200161026c565b61035e610394366004612dfc565b610824565b61035e61085d565b61035e6103af366004612e2c565b61087c565b6103c76103c2366004612bab565b610887565b604051901515815260200161026c565b61025f6103e5366004612b1a565b6108bd565b6102886103f8366004612e67565b6108cb565b61025f610919565b61040d61094e565b60405161026c9190612eb1565b610288610428366004612f52565b610c5d565b61035e61043b366004612bab565b610c6b565b61028861044e366004612f80565b610c97565b610288610461366004612f52565b610ca8565b610288610474366004612bab565b610d14565b610288610487366004612bab565b610d1d565b61028861049a366004612bab565b610d26565b6104a7610d2f565b60405161026c9190612fb8565b61035e6104c2366004612b1a565b610fdd565b61035e6104d5366004612b1a565b610feb565b6104ed6104e83660046130de565b61100d565b60405161026c9190613120565b6102b56110c8565b61035e611108565b61035e610518366004612b1a565b611122565b61035e61052b366004612b1a565b611130565b610538611167565b60405161026c9190613164565b610288610553366004613275565b611273565b610288610566366004612bab565b6112bb565b6103c76105793660046132d4565b6112c4565b610586611308565b6040805182516001600160801b03908116825260209384015116928101929092520161026c565b60606105df6105bb83611367565b6040516020016105cb9190612b83565b60405160208183030381529060405261148f565b919050565b6105ed816114b3565b50565b6105ed81611629565b606061063860405180604001604052806011815260200170455243343632364879706572647269766560781b8152506040516020016105cb9190612b83565b90565b606061063860016040516020016105cb9190613302565b604080516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602082015260009161063891016105cb565b6106a38989898989898989896116c5565b505050505050505050565b6106bc8686868686866118bc565b505050505050565b6106d18484848433611970565b50505050565b60408051606081018252600080825260208201819052918101919091526105df600860008481526020019081526020016000206040516020016105cb919081546001600160801b03808216835260809190911c6020830152600190920154909116604082015260600190565b60008381526012602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261078291016105cb565b9392505050565b60006106387f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081091906133b3565b6040805160ff9092166020830152016105cb565b6000828152600f602090815260408083206001600160a01b038516845282528083205481519283015261085791016105cb565b92915050565b600061063861086a611b31565b6040516020016105cb91815260200190565b600061085782611bc1565b6001600160a01b0381166000908152600e602090815260408083205490516105df926105cb9260ff169101901515815260200190565b60606105df6105bb83611cff565b836108d581611dfd565b6001600160a01b0316336001600160a01b03161461090657604051632aab8bd360e01b815260040160405180910390fd5b61091285858585611eba565b5050505050565b60606106386040518060400160405280600781526020016676312e302e313760c81b8152506040516020016105cb9190612b83565b6109c7604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006109d1611f27565b60075460106020527fd6f7110f7a6485ce27c724322bdc9b60c9b2518194eace178d55653f1be730215460008080527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb0154939450926001600160801b0390921691610a3c91906133fc565b610a46919061340f565b905060008215610b585773__$2b4fa6f02a36eedfe41c65e8dd342257d3$__635a1b419e610a7385611f3a565b6040805160e084811b6001600160e01b03191682528351600483015260208401516024830152918301516044820152606083015160648201526080830151608482015260a083015160a482015260c083015160c48201529082015160e482015261010082015161010482015261012082015161012482015261014082015161014482015261016090910151610164820152610184016040805180830381865af4158015610b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b489190613422565b509050610b5581846120d0565b90505b604080516101e0810182526002546001600160801b038082168352600454600f81900b60208501526006546001600160701b036201000082041695850195909552600160801b9485900482166060850152918490048116608084015260a0830186905260c08301879052600354849004811660e0840152600554808216610100850152918490048116610120840152908390048116610140830152600754808216610160840152929092049091166101808201526000906101a081018415610c2957610c2484866120e5565b610c2c565b60005b81526003546001600160801b0316602091820152604051919250610c56916105cb91849101612eb1565b5050505090565b610c6782826120fa565b5050565b6001600160a01b0381166000908152601360209081526040808320548151928301526105df91016105cb565b610ca383838333611eba565b505050565b3360008181526011602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6105ed81612183565b6105ed816121f7565b6105ed8161226b565b610d37612a33565b60408051610200810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f000000000000000000000000000000000000000000000000000000000000000081166020808401919091527f00000000000000000000000000000000000000000000000000000000000000008216838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f00000000000000000000000000000000000000000000000000000000000000006080808601919091527f000000000000000000000000000000000000000000000000000000000000000060a08601527f000000000000000000000000000000000000000000000000000000000000000060c08601527f000000000000000000000000000000000000000000000000000000000000000060e08601527f00000000000000000000000000000000000000000000000000000000000000006101008601527f00000000000000000000000000000000000000000000000000000000000000006101208601527f00000000000000000000000000000000000000000000000000000000000000006101408601526009548416610160860152600a548416610180860152600b5484166101a0860152600c549093166101c0850152845192830185527f000000000000000000000000000000000000000000000000000000000000000083527f0000000000000000000000000000000000000000000000000000000000000000838301527f0000000000000000000000000000000000000000000000000000000000000000838601527f0000000000000000000000000000000000000000000000000000000000000000908301526101e08301919091529151610638926105cb929101612fb8565b60006105df61086a836122df565b6000818152601060209081526040808320548151928301526105df91016105cb565b606060008267ffffffffffffffff81111561102a5761102a613447565b604051908082528060200260200182016040528015611053578160200160208202803683370190505b50905060005b838110156110ac5760008585838181106110755761107561345d565b905060200201359050600081549050808484815181106110975761109761345d565b60209081029190910101525050600101611059565b506110c1816040516020016105cb9190613120565b5092915050565b604080516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602082015260009161063891016105cb565b6000610638600d546040516020016105cb91815260200190565b60006105df61086a8361230b565b60006105df61086a6111627f0000000000000000000000000000000000000000000000000000000000000000856133fc565b612337565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915261063860026040516020016105cb919081546001600160801b038082168352608091821c602084015260018401548082166040850152821c60608401526002840154600f81900b83850152821c60a0840152600384015490811660c0840152811c60e083015260049092015460ff8082161515610100840152600882901c1615156101208301526001600160701b03601082901c1661014083015290911c6101608201526101800190565b8461127d81611dfd565b6001600160a01b0316336001600160a01b0316146112ae57604051632aab8bd360e01b815260040160405180910390fd5b6106bc8686868686611970565b6105ed8161237b565b6001600160a01b038281166000908152601160209081526040808320938516835292815282822054835160ff909116151591810191909152909161085791016105cb565b60408051808201909152600080825260208201526040805180820182526007546001600160801b03808216808452600160801b9092048116602093840190815284519384019290925290511691810191909152610638906060016105cb565b606060f882901c6001600160f81b0383166000611383826123ef565b90506000836003811115611399576113996133d0565b036113cb576040518060400160405280600d81526020016c048797065726472697665204c5609c1b8152509350611487565b60018360038111156113df576113df6133d0565b0361140b57806040516020016113f59190613473565b6040516020818303038152906040529350611487565b600283600381111561141f5761141f6133d0565b0361143557806040516020016113f591906134ac565b6003836003811115611449576114496133d0565b03611487576040518060400160405280601b81526020017f48797065726472697665205769746864726177616c205368617265000000000081525093505b505050919050565b80604051636e64089360e11b81526004016114aa9190612b83565b60405180910390fd5b6114bb6124a4565b600b54336000908152600e60205260409020546001600160a01b039091169060ff161580156114f35750336001600160a01b03821614155b801561150a57506009546001600160a01b03163314155b15611527576040516282b42960e81b815260040160405180910390fd5b6000611531611b31565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159f91906134e6565b90506115b56001600160a01b03851684836124ce565b816115be611b31565b146115dc576040516313dd85ff60e31b815260040160405180910390fd5b836001600160a01b0316836001600160a01b03167f951f51ee88c8e42633698bba90d1e53c0954470938036879e691c0232b47e09660405160405180910390a35050506105ed6001600055565b336000908152600e602052604090205460ff1615801561165457506009546001600160a01b03163314155b15611671576040516282b42960e81b815260040160405180910390fd5b600680548215156101000261ff00199091161790556040517f7c4d1fe30fdbfda9e9c4c43e759ef32e4db5128d4cb58ff3ae9583b89b6242a5906116ba90831515815260200190565b60405180910390a150565b834211156116e65760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b03871661170d5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526013602090815260408083205481518084018f905280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b61010083015261010282018c90526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156117fb573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b03161461183957604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389811660008181526013602090815260408083208054600101905560118252808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050505050505050505050565b6001600160a01b03861615806118d957506001600160a01b038516155b156118f75760405163f0dd15fd60e01b815260040160405180910390fd5b8281146119175760405163174861a760e31b815260040160405180910390fd5b60005b838110156119675761195f8585838181106119375761193761345d565b9050602002013588888686868181106119525761195261345d565b9050602002013533611970565b60010161191a565b50505050505050565b6001600160a01b038416158061198d57506001600160a01b038316155b156119ab5760405163f0dd15fd60e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031614611a6f576001600160a01b0380851660009081526011602090815260408083209385168352929052205460ff16611a6f5760008581526012602090815260408083206001600160a01b03808916855290835281842090851684529091529020546000198114611a6d5760008681526012602090815260408083206001600160a01b03808a168552908352818420908616845290915281208054859290611a6790849061340f565b90915550505b505b6000858152600f602090815260408083206001600160a01b038816845290915281208054849290611aa190849061340f565b90915550506000858152600f602090815260408083206001600160a01b038716845290915281208054849290611ad89084906133fc565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbc91906134e6565b905090565b6000611bcb6124a4565b611bd482612520565b600a546001600160a01b031680611bee6020850185612bab565b6001600160a01b031614611c1557604051630ad13b3360e21b815260040160405180910390fd5b336000908152600e602052604090205460ff16158015611c3e5750336001600160a01b03821614155b8015611c5557506009546001600160a01b03163314155b15611c72576040516282b42960e81b815260040160405180910390fd5b6000611c7c611f27565b600d80546000909155909150611c93818387612556565b93506001600160a01b0383167f3e5eb8642141e29a1b4e5c28b467396f814c1698e1adfc3ff327ddb9a60383618584611cd260408a0160208b01612bd6565b60408051938452602084019290925215159082015260600160405180910390a25050506105df6001600055565b606060f882901c6001600160f81b0383166000611d1b826123ef565b90506000836003811115611d3157611d316133d0565b03611d63576040518060400160405280600d81526020016c0485950455244524956452d4c5609c1b8152509350611487565b6001836003811115611d7757611d776133d0565b03611d8d57806040516020016113f591906134ff565b6002836003811115611da157611da16133d0565b03611db757806040516020016113f59190613537565b6003836003811115611dcb57611dcb6133d0565b0361148757505060408051808201909152600d81526c485950455244524956452d575360981b60208201529392505050565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526012602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000611bbc670de0b6b3a76400006122df565b611f9e6040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610180810182526002546001600160801b038082168352600454600f0b6020840152600160801b91829004811693830193909352606082018590527f000000000000000000000000000000000000000000000000000000000000000060808301527f000000000000000000000000000000000000000000000000000000000000000060a08301527f000000000000000000000000000000000000000000000000000000000000000060c08301527f000000000000000000000000000000000000000000000000000000000000000060e0830152600354048216610100820152600554909161012083019161209691166125ef565b81526004546001600160801b03600160801b91829004811660208401526005546040909301926120c8929004166125ef565b905292915050565b60006107828383670de0b6b3a7640000612665565b600061078283670de0b6b3a764000084612665565b6009546001600160a01b03163314612124576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f902923dcd4814f6cef7005a70e01d5cf2035ab02d4523ef3b865f1d7bab885af910160405180910390a25050565b6009546001600160a01b031633146121ad576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6009546001600160a01b03163314612221576040516282b42960e81b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fae062fb82c932c653cd44617343ecda1d13e375e0d6f20d969c944fbda1963d390600090a250565b6009546001600160a01b03163314612295576040516282b42960e81b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b60006108577f000000000000000000000000000000000000000000000000000000000000000083612683565b60006108577f0000000000000000000000000000000000000000000000000000000000000000836126f0565b600061235f6010600061234b600286612720565b815260200190815260200160002054612755565b6123716010600061234b600187612720565b6108579190613563565b6009546001600160a01b031633146123a5576040516282b42960e81b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0383169081179091556040517fc049058b1df2dd8902739ceb78992df12fa8369c06c450b3c6787137b452fdd290600090a250565b60408051604e80825260808201909252606091906000908260208201818036833701905050905060005b84156124965761242a600a86613599565b6124359060306133fc565b60f81b826001612445848761340f565b61244f919061340f565b8151811061245f5761245f61345d565b60200101906001600160f81b031916908160001a90535080612480816135ad565b915061248f9050600a866135c6565b9450612419565b918290030190815292915050565b6002600054036124c757604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ca3908490612783565b600061252f6020830183612bab565b6001600160a01b0316036105ed5760405163f0dd15fd60e01b815260040160405180910390fd5b60008061256385856120d0565b905061256e8161230b565b945084600003612582576000915050610782565b8491506125956040840160208501612bd6565b156125c4576125bd856125ab6020860186612bab565b6125b860408701876135da565b6127e6565b91506125e7565b6125e7856125d56020860186612bab565b6125e260408701876135da565b61288d565b509392505050565b600080670de0b6b3a76400006126036128c1565b61260d9190613621565b905080831161261d576000612627565b612627818461340f565b915061078261265e670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000613621565b83906120e5565b600082600019048411830215820261267c57600080fd5b5091020490565b6040516303d1689d60e11b8152600481018290526000906001600160a01b038416906307a2d13a906024015b602060405180830381865afa1580156126cc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078291906134e6565b6040516363737ac960e11b8152600481018290526000906001600160a01b0384169063c6e6f592906024016126af565b60006001600160f81b0382111561274a5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60006001600160ff1b0382111561277f5760405163396ea70160e11b815260040160405180910390fd5b5090565b60006127986001600160a01b038416836128ed565b905080516000141580156127bd5750808060200190518101906127bb9190613638565b155b15610ca357604051635274afe760e01b81526001600160a01b03841660048201526024016114aa565b604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ba087652906064016020604051808303816000875af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288491906134e6565b95945050505050565b6106d16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684866124ce565b6000611bbc427f00000000000000000000000000000000000000000000000000000000000000006128fb565b606061078283836000612911565b60006129078284613599565b610782908461340f565b6060814710156129365760405163cd78605960e01b81523060048201526024016114aa565b600080856001600160a01b031684866040516129529190613655565b60006040518083038185875af1925050503d806000811461298f576040519150601f19603f3d011682016040523d82523d6000602084013e612994565b606091505b50915091506129a48683836129ae565b9695505050505050565b6060826129c3576129be82612a0a565b610782565b81511580156129da57506001600160a01b0384163b155b15612a0357604051639996b31560e01b81526001600160a01b03851660048201526024016114aa565b5080610782565b805115612a1a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180610200016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001612b156040518060800160405280600081526020016000815260200160008152602001600081525090565b905290565b600060208284031215612b2c57600080fd5b5035919050565b60005b83811015612b4e578181015183820152602001612b36565b50506000910152565b60008151808452612b6f816020860160208601612b33565b601f01601f19169290920160200192915050565b6020815260006107826020830184612b57565b6001600160a01b03811681146105ed57600080fd5b600060208284031215612bbd57600080fd5b813561078281612b96565b80151581146105ed57600080fd5b600060208284031215612be857600080fd5b813561078281612bc8565b60ff811681146105ed57600080fd5b60008060008060008060008060006101208a8c031215612c2157600080fd5b8935985060208a0135975060408a0135612c3a81612b96565b965060608a0135612c4a81612b96565b955060808a0135612c5a81612bc8565b945060a08a0135935060c08a0135612c7181612bf3565b8093505060e08a013591506101008a013590509295985092959850929598565b60008083601f840112612ca357600080fd5b50813567ffffffffffffffff811115612cbb57600080fd5b6020830191508360208260051b8501011115612cd657600080fd5b9250929050565b60008060008060008060808789031215612cf657600080fd5b8635612d0181612b96565b95506020870135612d1181612b96565b9450604087013567ffffffffffffffff80821115612d2e57600080fd5b612d3a8a838b01612c91565b90965094506060890135915080821115612d5357600080fd5b50612d6089828a01612c91565b979a9699509497509295939492505050565b60008060008060808587031215612d8857600080fd5b843593506020850135612d9a81612b96565b92506040850135612daa81612b96565b9396929550929360600135925050565b600080600060608486031215612dcf57600080fd5b833592506020840135612de181612b96565b91506040840135612df181612b96565b809150509250925092565b60008060408385031215612e0f57600080fd5b823591506020830135612e2181612b96565b809150509250929050565b600060208284031215612e3e57600080fd5b813567ffffffffffffffff811115612e5557600080fd5b82016060818503121561078257600080fd5b60008060008060808587031215612e7d57600080fd5b843593506020850135612e8f81612b96565b9250604085013591506060850135612ea681612b96565b939692955090935050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c091820151918101919091526101e00190565b60008060408385031215612f6557600080fd5b8235612f7081612b96565b91506020830135612e2181612bc8565b600080600060608486031215612f9557600080fd5b833592506020840135612fa781612b96565b929592945050506040919091013590565b81516001600160a01b0316815261026081016020830151612fe460208401826001600160a01b03169052565b506040830151612fff60408401826001600160a01b03169052565b50606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151613071828501826001600160a01b03169052565b5050610180838101516001600160a01b03908116918401919091526101a0808501518216908401526101c080850151909116908301526101e0808401518051828501526020810151610200850152604081015161022085015260608101516102408501525b505092915050565b600080602083850312156130f157600080fd5b823567ffffffffffffffff81111561310857600080fd5b61311485828601612c91565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156131585783518352928401929184019160010161313c565b50909695505050505050565b81516001600160801b031681526101808101602083015161319060208401826001600160801b03169052565b5060408301516131ab60408401826001600160801b03169052565b5060608301516131c660608401826001600160801b03169052565b5060808301516131db6080840182600f0b9052565b5060a08301516131f660a08401826001600160801b03169052565b5060c083015161321160c08401826001600160801b03169052565b5060e083015161322c60e08401826001600160801b03169052565b506101008381015115159083015261012080840151151590830152610140808401516001600160701b031690830152610160808401516001600160801b038116828501526130d6565b600080600080600060a0868803121561328d57600080fd5b85359450602086013561329f81612b96565b935060408601356132af81612b96565b92506060860135915060808601356132c681612b96565b809150509295509295909350565b600080604083850312156132e757600080fd5b82356132f281612b96565b91506020830135612e2181612b96565b60006020808352600084548160018260011c9150600183168061332657607f831692505b60208310810361334457634e487b7160e01b85526022600452602485fd5b60208801839052604088018180156133635760018114613379576133a4565b60ff198616825284151560051b820196506133a4565b60008b81526020902060005b8681101561339e57815484820152908501908901613385565b83019750505b50949998505050505050505050565b6000602082840312156133c557600080fd5b815161078281612bf3565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610857576108576133e6565b81810381811115610857576108576133e6565b6000806040838503121561343557600080fd5b825191506020830151612e2181612bc8565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b700243cb832b9323934bb32902637b7339d1607d1b81526000825161349f816011850160208701612b33565b9190910160110192915050565b710243cb832b9323934bb329029b437b93a1d160751b8152600082516134d9816012850160208701612b33565b9190910160120192915050565b6000602082840312156134f857600080fd5b5051919050565b6f242ca822a9222924ab2296a627a7239d60811b81526000825161352a816010850160208701612b33565b9190910160100192915050565b70242ca822a9222924ab2296a9a427a92a1d60791b81526000825161349f816011850160208701612b33565b81810360008312801583831316838312821617156110c1576110c16133e6565b634e487b7160e01b600052601260045260246000fd5b6000826135a8576135a8613583565b500690565b6000600182016135bf576135bf6133e6565b5060010190565b6000826135d5576135d5613583565b500490565b6000808335601e198436030181126135f157600080fd5b83018035915067ffffffffffffffff82111561360c57600080fd5b602001915036819003821315612cd657600080fd5b8082028115828204841417610857576108576133e6565b60006020828403121561364a57600080fd5b815161078281612bc8565b60008251613667818460208701612b33565b919091019291505056fea2646970667358221220646ee3bb60d8d5b62f1f55617f7e388522ac2341dae64d0c37d518fcc012738964736f6c63430008160033a26469706673582212209ffbe65365bf3331ffd6c51e41a7ace62b10504f12c5071bd1e60df2e73e444d64736f6c63430008160033",
260            [
261                (
262                    "contracts/src/libraries/LPMath.sol:LPMath",
263                    libs.lp_math,
264                )
265            ],
266            client.clone(),
267        ).unwrap();
268        let deployer = factory.deploy(constructor_args)?;
269        let deployer = ::ethers::contract::ContractDeployer::new(deployer);
270        Ok(deployer)
271    }
272}
273