@rev-net/core-v6 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/REVNET_SECURITY_CHECKLIST.md +164 -0
- package/SECURITY.md +68 -0
- package/SKILLS.md +166 -0
- package/deployments/revnet-core-v5/arbitrum/REVDeployer.json +2821 -0
- package/deployments/revnet-core-v5/arbitrum/REVLoans.json +2260 -0
- package/deployments/revnet-core-v5/arbitrum_sepolia/REVDeployer.json +2821 -0
- package/deployments/revnet-core-v5/arbitrum_sepolia/REVLoans.json +2260 -0
- package/deployments/revnet-core-v5/base/REVDeployer.json +2825 -0
- package/deployments/revnet-core-v5/base/REVLoans.json +2264 -0
- package/deployments/revnet-core-v5/base_sepolia/REVDeployer.json +2825 -0
- package/deployments/revnet-core-v5/base_sepolia/REVLoans.json +2264 -0
- package/deployments/revnet-core-v5/ethereum/REVDeployer.json +2825 -0
- package/deployments/revnet-core-v5/ethereum/REVLoans.json +2264 -0
- package/deployments/revnet-core-v5/optimism/REVDeployer.json +2821 -0
- package/deployments/revnet-core-v5/optimism/REVLoans.json +2260 -0
- package/deployments/revnet-core-v5/optimism_sepolia/REVDeployer.json +2825 -0
- package/deployments/revnet-core-v5/optimism_sepolia/REVLoans.json +2264 -0
- package/deployments/revnet-core-v5/sepolia/REVDeployer.json +2825 -0
- package/deployments/revnet-core-v5/sepolia/REVLoans.json +2264 -0
- package/docs/book.css +13 -0
- package/docs/book.toml +13 -0
- package/docs/solidity.min.js +74 -0
- package/docs/src/README.md +88 -0
- package/docs/src/SUMMARY.md +20 -0
- package/docs/src/src/README.md +7 -0
- package/docs/src/src/REVDeployer.sol/contract.REVDeployer.md +968 -0
- package/docs/src/src/REVLoans.sol/contract.REVLoans.md +1047 -0
- package/docs/src/src/interfaces/IREVDeployer.sol/interface.IREVDeployer.md +243 -0
- package/docs/src/src/interfaces/IREVLoans.sol/interface.IREVLoans.md +296 -0
- package/docs/src/src/interfaces/README.md +5 -0
- package/docs/src/src/structs/README.md +14 -0
- package/docs/src/src/structs/REVAutoIssuance.sol/struct.REVAutoIssuance.md +19 -0
- package/docs/src/src/structs/REVBuybackHookConfig.sol/struct.REVBuybackHookConfig.md +19 -0
- package/docs/src/src/structs/REVBuybackPoolConfig.sol/struct.REVBuybackPoolConfig.md +21 -0
- package/docs/src/src/structs/REVConfig.sol/struct.REVConfig.md +35 -0
- package/docs/src/src/structs/REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md +28 -0
- package/docs/src/src/structs/REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md +34 -0
- package/docs/src/src/structs/REVDescription.sol/struct.REVDescription.md +23 -0
- package/docs/src/src/structs/REVLoan.sol/struct.REVLoan.md +28 -0
- package/docs/src/src/structs/REVLoanSource.sol/struct.REVLoanSource.md +16 -0
- package/docs/src/src/structs/REVStageConfig.sol/struct.REVStageConfig.md +44 -0
- package/docs/src/src/structs/REVSuckerDeploymentConfig.sol/struct.REVSuckerDeploymentConfig.md +16 -0
- package/foundry.lock +11 -0
- package/foundry.toml +23 -0
- package/package.json +31 -0
- package/remappings.txt +1 -0
- package/script/Deploy.s.sol +350 -0
- package/script/helpers/RevnetCoreDeploymentLib.sol +72 -0
- package/slither-ci.config.json +10 -0
- package/sphinx.lock +507 -0
- package/src/REVDeployer.sol +1257 -0
- package/src/REVLoans.sol +1333 -0
- package/src/interfaces/IREVDeployer.sol +198 -0
- package/src/interfaces/IREVLoans.sol +241 -0
- package/src/structs/REVAutoIssuance.sol +11 -0
- package/src/structs/REVConfig.sol +17 -0
- package/src/structs/REVCroptopAllowedPost.sol +20 -0
- package/src/structs/REVDeploy721TiersHookConfig.sol +25 -0
- package/src/structs/REVDescription.sol +14 -0
- package/src/structs/REVLoan.sol +19 -0
- package/src/structs/REVLoanSource.sol +11 -0
- package/src/structs/REVStageConfig.sol +34 -0
- package/src/structs/REVSuckerDeploymentConfig.sol +11 -0
- package/test/REV.integrations.t.sol +420 -0
- package/test/REVAutoIssuanceFuzz.t.sol +276 -0
- package/test/REVDeployerAuditRegressions.t.sol +328 -0
- package/test/REVInvincibility.t.sol +1275 -0
- package/test/REVInvincibilityHandler.sol +357 -0
- package/test/REVLifecycle.t.sol +364 -0
- package/test/REVLoans.invariants.t.sol +642 -0
- package/test/REVLoansAttacks.t.sol +739 -0
- package/test/REVLoansAuditRegressions.t.sol +314 -0
- package/test/REVLoansFeeRecovery.t.sol +704 -0
- package/test/REVLoansSourced.t.sol +1732 -0
- package/test/REVLoansUnSourced.t.sol +331 -0
- package/test/TestPR09_ConversionDocumentation.t.sol +304 -0
- package/test/TestPR10_LiquidationBehavior.t.sol +340 -0
- package/test/TestPR11_LowFindings.t.sol +571 -0
- package/test/TestPR12_FlashLoanSurplus.t.sol +305 -0
- package/test/TestPR13_CrossSourceReallocation.t.sol +302 -0
- package/test/TestPR15_CashOutCallerValidation.t.sol +320 -0
- package/test/TestPR16_ZeroRepayment.t.sol +297 -0
- package/test/TestPR21_Uint112Overflow.t.sol +251 -0
- package/test/TestPR22_HookArrayOOB.t.sol +221 -0
- package/test/TestPR26_BurnHeldTokens.t.sol +331 -0
- package/test/TestPR27_CEIPattern.t.sol +448 -0
- package/test/TestPR29_SwapTerminalPermission.t.sol +206 -0
- package/test/TestPR32_MixedFixes.t.sol +529 -0
- package/test/helpers/MaliciousContracts.sol +233 -0
- package/test/mock/MockBuybackDataHook.sol +61 -0
|
@@ -0,0 +1,2264 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "sphinx-sol-ct-artifact-1",
|
|
3
|
+
"merkleRoot": "0x948b5063b043c4f0632a523280a323cc157913fa9652234d2e94ee89a8f8059f",
|
|
4
|
+
"address": "0x1880d832aa283d05b8eab68877717e25fbd550bb",
|
|
5
|
+
"sourceName": "src/REVLoans.sol",
|
|
6
|
+
"contractName": "REVLoans",
|
|
7
|
+
"chainId": "0xaa37dc",
|
|
8
|
+
"abi": [
|
|
9
|
+
{
|
|
10
|
+
"inputs": [
|
|
11
|
+
{
|
|
12
|
+
"internalType": "contract IREVDeployer",
|
|
13
|
+
"name": "revnets",
|
|
14
|
+
"type": "address"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"internalType": "uint256",
|
|
18
|
+
"name": "revId",
|
|
19
|
+
"type": "uint256"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"internalType": "address",
|
|
23
|
+
"name": "owner",
|
|
24
|
+
"type": "address"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"internalType": "contract IPermit2",
|
|
28
|
+
"name": "permit2",
|
|
29
|
+
"type": "address"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"internalType": "address",
|
|
33
|
+
"name": "trustedForwarder",
|
|
34
|
+
"type": "address"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"stateMutability": "nonpayable",
|
|
38
|
+
"type": "constructor"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"stateMutability": "payable",
|
|
42
|
+
"type": "fallback"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"stateMutability": "payable",
|
|
46
|
+
"type": "receive"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"inputs": [],
|
|
50
|
+
"name": "CONTROLLER",
|
|
51
|
+
"outputs": [
|
|
52
|
+
{
|
|
53
|
+
"internalType": "contract IJBController",
|
|
54
|
+
"name": "",
|
|
55
|
+
"type": "address"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"stateMutability": "view",
|
|
59
|
+
"type": "function"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"inputs": [],
|
|
63
|
+
"name": "DIRECTORY",
|
|
64
|
+
"outputs": [
|
|
65
|
+
{
|
|
66
|
+
"internalType": "contract IJBDirectory",
|
|
67
|
+
"name": "",
|
|
68
|
+
"type": "address"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"stateMutability": "view",
|
|
72
|
+
"type": "function"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"inputs": [],
|
|
76
|
+
"name": "LOAN_LIQUIDATION_DURATION",
|
|
77
|
+
"outputs": [
|
|
78
|
+
{
|
|
79
|
+
"internalType": "uint256",
|
|
80
|
+
"name": "",
|
|
81
|
+
"type": "uint256"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"stateMutability": "view",
|
|
85
|
+
"type": "function"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"inputs": [],
|
|
89
|
+
"name": "MAX_PREPAID_FEE_PERCENT",
|
|
90
|
+
"outputs": [
|
|
91
|
+
{
|
|
92
|
+
"internalType": "uint256",
|
|
93
|
+
"name": "",
|
|
94
|
+
"type": "uint256"
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"stateMutability": "view",
|
|
98
|
+
"type": "function"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"inputs": [],
|
|
102
|
+
"name": "MIN_PREPAID_FEE_PERCENT",
|
|
103
|
+
"outputs": [
|
|
104
|
+
{
|
|
105
|
+
"internalType": "uint256",
|
|
106
|
+
"name": "",
|
|
107
|
+
"type": "uint256"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"stateMutability": "view",
|
|
111
|
+
"type": "function"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"inputs": [],
|
|
115
|
+
"name": "PERMIT2",
|
|
116
|
+
"outputs": [
|
|
117
|
+
{
|
|
118
|
+
"internalType": "contract IPermit2",
|
|
119
|
+
"name": "",
|
|
120
|
+
"type": "address"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"stateMutability": "view",
|
|
124
|
+
"type": "function"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"inputs": [],
|
|
128
|
+
"name": "PRICES",
|
|
129
|
+
"outputs": [
|
|
130
|
+
{
|
|
131
|
+
"internalType": "contract IJBPrices",
|
|
132
|
+
"name": "",
|
|
133
|
+
"type": "address"
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"stateMutability": "view",
|
|
137
|
+
"type": "function"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"inputs": [],
|
|
141
|
+
"name": "PROJECTS",
|
|
142
|
+
"outputs": [
|
|
143
|
+
{
|
|
144
|
+
"internalType": "contract IJBProjects",
|
|
145
|
+
"name": "",
|
|
146
|
+
"type": "address"
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"stateMutability": "view",
|
|
150
|
+
"type": "function"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"inputs": [],
|
|
154
|
+
"name": "REVNETS",
|
|
155
|
+
"outputs": [
|
|
156
|
+
{
|
|
157
|
+
"internalType": "contract IREVDeployer",
|
|
158
|
+
"name": "",
|
|
159
|
+
"type": "address"
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"stateMutability": "view",
|
|
163
|
+
"type": "function"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"inputs": [],
|
|
167
|
+
"name": "REV_ID",
|
|
168
|
+
"outputs": [
|
|
169
|
+
{
|
|
170
|
+
"internalType": "uint256",
|
|
171
|
+
"name": "",
|
|
172
|
+
"type": "uint256"
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"stateMutability": "view",
|
|
176
|
+
"type": "function"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"inputs": [],
|
|
180
|
+
"name": "REV_PREPAID_FEE_PERCENT",
|
|
181
|
+
"outputs": [
|
|
182
|
+
{
|
|
183
|
+
"internalType": "uint256",
|
|
184
|
+
"name": "",
|
|
185
|
+
"type": "uint256"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"stateMutability": "view",
|
|
189
|
+
"type": "function"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"inputs": [
|
|
193
|
+
{
|
|
194
|
+
"internalType": "address",
|
|
195
|
+
"name": "to",
|
|
196
|
+
"type": "address"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"internalType": "uint256",
|
|
200
|
+
"name": "tokenId",
|
|
201
|
+
"type": "uint256"
|
|
202
|
+
}
|
|
203
|
+
],
|
|
204
|
+
"name": "approve",
|
|
205
|
+
"outputs": [],
|
|
206
|
+
"stateMutability": "nonpayable",
|
|
207
|
+
"type": "function"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"inputs": [
|
|
211
|
+
{
|
|
212
|
+
"internalType": "address",
|
|
213
|
+
"name": "owner",
|
|
214
|
+
"type": "address"
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"name": "balanceOf",
|
|
218
|
+
"outputs": [
|
|
219
|
+
{
|
|
220
|
+
"internalType": "uint256",
|
|
221
|
+
"name": "",
|
|
222
|
+
"type": "uint256"
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"stateMutability": "view",
|
|
226
|
+
"type": "function"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"inputs": [
|
|
230
|
+
{
|
|
231
|
+
"internalType": "uint256",
|
|
232
|
+
"name": "revnetId",
|
|
233
|
+
"type": "uint256"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"components": [
|
|
237
|
+
{
|
|
238
|
+
"internalType": "address",
|
|
239
|
+
"name": "token",
|
|
240
|
+
"type": "address"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
244
|
+
"name": "terminal",
|
|
245
|
+
"type": "address"
|
|
246
|
+
}
|
|
247
|
+
],
|
|
248
|
+
"internalType": "struct REVLoanSource",
|
|
249
|
+
"name": "source",
|
|
250
|
+
"type": "tuple"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"internalType": "uint256",
|
|
254
|
+
"name": "minBorrowAmount",
|
|
255
|
+
"type": "uint256"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"internalType": "uint256",
|
|
259
|
+
"name": "collateralCount",
|
|
260
|
+
"type": "uint256"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"internalType": "address payable",
|
|
264
|
+
"name": "beneficiary",
|
|
265
|
+
"type": "address"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"internalType": "uint256",
|
|
269
|
+
"name": "prepaidFeePercent",
|
|
270
|
+
"type": "uint256"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"name": "borrowFrom",
|
|
274
|
+
"outputs": [
|
|
275
|
+
{
|
|
276
|
+
"internalType": "uint256",
|
|
277
|
+
"name": "loanId",
|
|
278
|
+
"type": "uint256"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"components": [
|
|
282
|
+
{
|
|
283
|
+
"internalType": "uint112",
|
|
284
|
+
"name": "amount",
|
|
285
|
+
"type": "uint112"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"internalType": "uint112",
|
|
289
|
+
"name": "collateral",
|
|
290
|
+
"type": "uint112"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"internalType": "uint48",
|
|
294
|
+
"name": "createdAt",
|
|
295
|
+
"type": "uint48"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"internalType": "uint16",
|
|
299
|
+
"name": "prepaidFeePercent",
|
|
300
|
+
"type": "uint16"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"internalType": "uint32",
|
|
304
|
+
"name": "prepaidDuration",
|
|
305
|
+
"type": "uint32"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"components": [
|
|
309
|
+
{
|
|
310
|
+
"internalType": "address",
|
|
311
|
+
"name": "token",
|
|
312
|
+
"type": "address"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
316
|
+
"name": "terminal",
|
|
317
|
+
"type": "address"
|
|
318
|
+
}
|
|
319
|
+
],
|
|
320
|
+
"internalType": "struct REVLoanSource",
|
|
321
|
+
"name": "source",
|
|
322
|
+
"type": "tuple"
|
|
323
|
+
}
|
|
324
|
+
],
|
|
325
|
+
"internalType": "struct REVLoan",
|
|
326
|
+
"name": "",
|
|
327
|
+
"type": "tuple"
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
"stateMutability": "nonpayable",
|
|
331
|
+
"type": "function"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"inputs": [
|
|
335
|
+
{
|
|
336
|
+
"internalType": "uint256",
|
|
337
|
+
"name": "revnetId",
|
|
338
|
+
"type": "uint256"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"internalType": "uint256",
|
|
342
|
+
"name": "collateralCount",
|
|
343
|
+
"type": "uint256"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"internalType": "uint256",
|
|
347
|
+
"name": "decimals",
|
|
348
|
+
"type": "uint256"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"internalType": "uint256",
|
|
352
|
+
"name": "currency",
|
|
353
|
+
"type": "uint256"
|
|
354
|
+
}
|
|
355
|
+
],
|
|
356
|
+
"name": "borrowableAmountFrom",
|
|
357
|
+
"outputs": [
|
|
358
|
+
{
|
|
359
|
+
"internalType": "uint256",
|
|
360
|
+
"name": "",
|
|
361
|
+
"type": "uint256"
|
|
362
|
+
}
|
|
363
|
+
],
|
|
364
|
+
"stateMutability": "view",
|
|
365
|
+
"type": "function"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"inputs": [
|
|
369
|
+
{
|
|
370
|
+
"components": [
|
|
371
|
+
{
|
|
372
|
+
"internalType": "uint112",
|
|
373
|
+
"name": "amount",
|
|
374
|
+
"type": "uint112"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"internalType": "uint112",
|
|
378
|
+
"name": "collateral",
|
|
379
|
+
"type": "uint112"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"internalType": "uint48",
|
|
383
|
+
"name": "createdAt",
|
|
384
|
+
"type": "uint48"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"internalType": "uint16",
|
|
388
|
+
"name": "prepaidFeePercent",
|
|
389
|
+
"type": "uint16"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"internalType": "uint32",
|
|
393
|
+
"name": "prepaidDuration",
|
|
394
|
+
"type": "uint32"
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"components": [
|
|
398
|
+
{
|
|
399
|
+
"internalType": "address",
|
|
400
|
+
"name": "token",
|
|
401
|
+
"type": "address"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
405
|
+
"name": "terminal",
|
|
406
|
+
"type": "address"
|
|
407
|
+
}
|
|
408
|
+
],
|
|
409
|
+
"internalType": "struct REVLoanSource",
|
|
410
|
+
"name": "source",
|
|
411
|
+
"type": "tuple"
|
|
412
|
+
}
|
|
413
|
+
],
|
|
414
|
+
"internalType": "struct REVLoan",
|
|
415
|
+
"name": "loan",
|
|
416
|
+
"type": "tuple"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"internalType": "uint256",
|
|
420
|
+
"name": "amount",
|
|
421
|
+
"type": "uint256"
|
|
422
|
+
}
|
|
423
|
+
],
|
|
424
|
+
"name": "determineSourceFeeAmount",
|
|
425
|
+
"outputs": [
|
|
426
|
+
{
|
|
427
|
+
"internalType": "uint256",
|
|
428
|
+
"name": "",
|
|
429
|
+
"type": "uint256"
|
|
430
|
+
}
|
|
431
|
+
],
|
|
432
|
+
"stateMutability": "view",
|
|
433
|
+
"type": "function"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"inputs": [
|
|
437
|
+
{
|
|
438
|
+
"internalType": "uint256",
|
|
439
|
+
"name": "tokenId",
|
|
440
|
+
"type": "uint256"
|
|
441
|
+
}
|
|
442
|
+
],
|
|
443
|
+
"name": "getApproved",
|
|
444
|
+
"outputs": [
|
|
445
|
+
{
|
|
446
|
+
"internalType": "address",
|
|
447
|
+
"name": "",
|
|
448
|
+
"type": "address"
|
|
449
|
+
}
|
|
450
|
+
],
|
|
451
|
+
"stateMutability": "view",
|
|
452
|
+
"type": "function"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"inputs": [
|
|
456
|
+
{
|
|
457
|
+
"internalType": "address",
|
|
458
|
+
"name": "owner",
|
|
459
|
+
"type": "address"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"internalType": "address",
|
|
463
|
+
"name": "operator",
|
|
464
|
+
"type": "address"
|
|
465
|
+
}
|
|
466
|
+
],
|
|
467
|
+
"name": "isApprovedForAll",
|
|
468
|
+
"outputs": [
|
|
469
|
+
{
|
|
470
|
+
"internalType": "bool",
|
|
471
|
+
"name": "",
|
|
472
|
+
"type": "bool"
|
|
473
|
+
}
|
|
474
|
+
],
|
|
475
|
+
"stateMutability": "view",
|
|
476
|
+
"type": "function"
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
"inputs": [
|
|
480
|
+
{
|
|
481
|
+
"internalType": "uint256",
|
|
482
|
+
"name": "revnetId",
|
|
483
|
+
"type": "uint256"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
487
|
+
"name": "terminal",
|
|
488
|
+
"type": "address"
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"internalType": "address",
|
|
492
|
+
"name": "token",
|
|
493
|
+
"type": "address"
|
|
494
|
+
}
|
|
495
|
+
],
|
|
496
|
+
"name": "isLoanSourceOf",
|
|
497
|
+
"outputs": [
|
|
498
|
+
{
|
|
499
|
+
"internalType": "bool",
|
|
500
|
+
"name": "",
|
|
501
|
+
"type": "bool"
|
|
502
|
+
}
|
|
503
|
+
],
|
|
504
|
+
"stateMutability": "view",
|
|
505
|
+
"type": "function"
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"inputs": [
|
|
509
|
+
{
|
|
510
|
+
"internalType": "address",
|
|
511
|
+
"name": "forwarder",
|
|
512
|
+
"type": "address"
|
|
513
|
+
}
|
|
514
|
+
],
|
|
515
|
+
"name": "isTrustedForwarder",
|
|
516
|
+
"outputs": [
|
|
517
|
+
{
|
|
518
|
+
"internalType": "bool",
|
|
519
|
+
"name": "",
|
|
520
|
+
"type": "bool"
|
|
521
|
+
}
|
|
522
|
+
],
|
|
523
|
+
"stateMutability": "view",
|
|
524
|
+
"type": "function"
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
"inputs": [
|
|
528
|
+
{
|
|
529
|
+
"internalType": "uint256",
|
|
530
|
+
"name": "revnetId",
|
|
531
|
+
"type": "uint256"
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"internalType": "uint256",
|
|
535
|
+
"name": "startingLoanId",
|
|
536
|
+
"type": "uint256"
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"internalType": "uint256",
|
|
540
|
+
"name": "count",
|
|
541
|
+
"type": "uint256"
|
|
542
|
+
}
|
|
543
|
+
],
|
|
544
|
+
"name": "liquidateExpiredLoansFrom",
|
|
545
|
+
"outputs": [],
|
|
546
|
+
"stateMutability": "nonpayable",
|
|
547
|
+
"type": "function"
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"inputs": [
|
|
551
|
+
{
|
|
552
|
+
"internalType": "uint256",
|
|
553
|
+
"name": "loanId",
|
|
554
|
+
"type": "uint256"
|
|
555
|
+
}
|
|
556
|
+
],
|
|
557
|
+
"name": "loanOf",
|
|
558
|
+
"outputs": [
|
|
559
|
+
{
|
|
560
|
+
"components": [
|
|
561
|
+
{
|
|
562
|
+
"internalType": "uint112",
|
|
563
|
+
"name": "amount",
|
|
564
|
+
"type": "uint112"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"internalType": "uint112",
|
|
568
|
+
"name": "collateral",
|
|
569
|
+
"type": "uint112"
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
"internalType": "uint48",
|
|
573
|
+
"name": "createdAt",
|
|
574
|
+
"type": "uint48"
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
"internalType": "uint16",
|
|
578
|
+
"name": "prepaidFeePercent",
|
|
579
|
+
"type": "uint16"
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"internalType": "uint32",
|
|
583
|
+
"name": "prepaidDuration",
|
|
584
|
+
"type": "uint32"
|
|
585
|
+
},
|
|
586
|
+
{
|
|
587
|
+
"components": [
|
|
588
|
+
{
|
|
589
|
+
"internalType": "address",
|
|
590
|
+
"name": "token",
|
|
591
|
+
"type": "address"
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
595
|
+
"name": "terminal",
|
|
596
|
+
"type": "address"
|
|
597
|
+
}
|
|
598
|
+
],
|
|
599
|
+
"internalType": "struct REVLoanSource",
|
|
600
|
+
"name": "source",
|
|
601
|
+
"type": "tuple"
|
|
602
|
+
}
|
|
603
|
+
],
|
|
604
|
+
"internalType": "struct REVLoan",
|
|
605
|
+
"name": "",
|
|
606
|
+
"type": "tuple"
|
|
607
|
+
}
|
|
608
|
+
],
|
|
609
|
+
"stateMutability": "view",
|
|
610
|
+
"type": "function"
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"inputs": [
|
|
614
|
+
{
|
|
615
|
+
"internalType": "uint256",
|
|
616
|
+
"name": "revnetId",
|
|
617
|
+
"type": "uint256"
|
|
618
|
+
}
|
|
619
|
+
],
|
|
620
|
+
"name": "loanSourcesOf",
|
|
621
|
+
"outputs": [
|
|
622
|
+
{
|
|
623
|
+
"components": [
|
|
624
|
+
{
|
|
625
|
+
"internalType": "address",
|
|
626
|
+
"name": "token",
|
|
627
|
+
"type": "address"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
631
|
+
"name": "terminal",
|
|
632
|
+
"type": "address"
|
|
633
|
+
}
|
|
634
|
+
],
|
|
635
|
+
"internalType": "struct REVLoanSource[]",
|
|
636
|
+
"name": "",
|
|
637
|
+
"type": "tuple[]"
|
|
638
|
+
}
|
|
639
|
+
],
|
|
640
|
+
"stateMutability": "view",
|
|
641
|
+
"type": "function"
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"inputs": [],
|
|
645
|
+
"name": "name",
|
|
646
|
+
"outputs": [
|
|
647
|
+
{
|
|
648
|
+
"internalType": "string",
|
|
649
|
+
"name": "",
|
|
650
|
+
"type": "string"
|
|
651
|
+
}
|
|
652
|
+
],
|
|
653
|
+
"stateMutability": "view",
|
|
654
|
+
"type": "function"
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"inputs": [
|
|
658
|
+
{
|
|
659
|
+
"internalType": "uint256",
|
|
660
|
+
"name": "revnetId",
|
|
661
|
+
"type": "uint256"
|
|
662
|
+
}
|
|
663
|
+
],
|
|
664
|
+
"name": "numberOfLoansFor",
|
|
665
|
+
"outputs": [
|
|
666
|
+
{
|
|
667
|
+
"internalType": "uint256",
|
|
668
|
+
"name": "",
|
|
669
|
+
"type": "uint256"
|
|
670
|
+
}
|
|
671
|
+
],
|
|
672
|
+
"stateMutability": "view",
|
|
673
|
+
"type": "function"
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"inputs": [],
|
|
677
|
+
"name": "owner",
|
|
678
|
+
"outputs": [
|
|
679
|
+
{
|
|
680
|
+
"internalType": "address",
|
|
681
|
+
"name": "",
|
|
682
|
+
"type": "address"
|
|
683
|
+
}
|
|
684
|
+
],
|
|
685
|
+
"stateMutability": "view",
|
|
686
|
+
"type": "function"
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"inputs": [
|
|
690
|
+
{
|
|
691
|
+
"internalType": "uint256",
|
|
692
|
+
"name": "tokenId",
|
|
693
|
+
"type": "uint256"
|
|
694
|
+
}
|
|
695
|
+
],
|
|
696
|
+
"name": "ownerOf",
|
|
697
|
+
"outputs": [
|
|
698
|
+
{
|
|
699
|
+
"internalType": "address",
|
|
700
|
+
"name": "",
|
|
701
|
+
"type": "address"
|
|
702
|
+
}
|
|
703
|
+
],
|
|
704
|
+
"stateMutability": "view",
|
|
705
|
+
"type": "function"
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
"inputs": [
|
|
709
|
+
{
|
|
710
|
+
"internalType": "uint256",
|
|
711
|
+
"name": "loanId",
|
|
712
|
+
"type": "uint256"
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
"internalType": "uint256",
|
|
716
|
+
"name": "collateralCountToTransfer",
|
|
717
|
+
"type": "uint256"
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"components": [
|
|
721
|
+
{
|
|
722
|
+
"internalType": "address",
|
|
723
|
+
"name": "token",
|
|
724
|
+
"type": "address"
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
728
|
+
"name": "terminal",
|
|
729
|
+
"type": "address"
|
|
730
|
+
}
|
|
731
|
+
],
|
|
732
|
+
"internalType": "struct REVLoanSource",
|
|
733
|
+
"name": "source",
|
|
734
|
+
"type": "tuple"
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"internalType": "uint256",
|
|
738
|
+
"name": "minBorrowAmount",
|
|
739
|
+
"type": "uint256"
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
"internalType": "uint256",
|
|
743
|
+
"name": "collateralCountToAdd",
|
|
744
|
+
"type": "uint256"
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
"internalType": "address payable",
|
|
748
|
+
"name": "beneficiary",
|
|
749
|
+
"type": "address"
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
"internalType": "uint256",
|
|
753
|
+
"name": "prepaidFeePercent",
|
|
754
|
+
"type": "uint256"
|
|
755
|
+
}
|
|
756
|
+
],
|
|
757
|
+
"name": "reallocateCollateralFromLoan",
|
|
758
|
+
"outputs": [
|
|
759
|
+
{
|
|
760
|
+
"internalType": "uint256",
|
|
761
|
+
"name": "reallocatedLoanId",
|
|
762
|
+
"type": "uint256"
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"internalType": "uint256",
|
|
766
|
+
"name": "newLoanId",
|
|
767
|
+
"type": "uint256"
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"components": [
|
|
771
|
+
{
|
|
772
|
+
"internalType": "uint112",
|
|
773
|
+
"name": "amount",
|
|
774
|
+
"type": "uint112"
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
"internalType": "uint112",
|
|
778
|
+
"name": "collateral",
|
|
779
|
+
"type": "uint112"
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
"internalType": "uint48",
|
|
783
|
+
"name": "createdAt",
|
|
784
|
+
"type": "uint48"
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"internalType": "uint16",
|
|
788
|
+
"name": "prepaidFeePercent",
|
|
789
|
+
"type": "uint16"
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
"internalType": "uint32",
|
|
793
|
+
"name": "prepaidDuration",
|
|
794
|
+
"type": "uint32"
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"components": [
|
|
798
|
+
{
|
|
799
|
+
"internalType": "address",
|
|
800
|
+
"name": "token",
|
|
801
|
+
"type": "address"
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
805
|
+
"name": "terminal",
|
|
806
|
+
"type": "address"
|
|
807
|
+
}
|
|
808
|
+
],
|
|
809
|
+
"internalType": "struct REVLoanSource",
|
|
810
|
+
"name": "source",
|
|
811
|
+
"type": "tuple"
|
|
812
|
+
}
|
|
813
|
+
],
|
|
814
|
+
"internalType": "struct REVLoan",
|
|
815
|
+
"name": "reallocatedLoan",
|
|
816
|
+
"type": "tuple"
|
|
817
|
+
},
|
|
818
|
+
{
|
|
819
|
+
"components": [
|
|
820
|
+
{
|
|
821
|
+
"internalType": "uint112",
|
|
822
|
+
"name": "amount",
|
|
823
|
+
"type": "uint112"
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"internalType": "uint112",
|
|
827
|
+
"name": "collateral",
|
|
828
|
+
"type": "uint112"
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
"internalType": "uint48",
|
|
832
|
+
"name": "createdAt",
|
|
833
|
+
"type": "uint48"
|
|
834
|
+
},
|
|
835
|
+
{
|
|
836
|
+
"internalType": "uint16",
|
|
837
|
+
"name": "prepaidFeePercent",
|
|
838
|
+
"type": "uint16"
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"internalType": "uint32",
|
|
842
|
+
"name": "prepaidDuration",
|
|
843
|
+
"type": "uint32"
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
"components": [
|
|
847
|
+
{
|
|
848
|
+
"internalType": "address",
|
|
849
|
+
"name": "token",
|
|
850
|
+
"type": "address"
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
854
|
+
"name": "terminal",
|
|
855
|
+
"type": "address"
|
|
856
|
+
}
|
|
857
|
+
],
|
|
858
|
+
"internalType": "struct REVLoanSource",
|
|
859
|
+
"name": "source",
|
|
860
|
+
"type": "tuple"
|
|
861
|
+
}
|
|
862
|
+
],
|
|
863
|
+
"internalType": "struct REVLoan",
|
|
864
|
+
"name": "newLoan",
|
|
865
|
+
"type": "tuple"
|
|
866
|
+
}
|
|
867
|
+
],
|
|
868
|
+
"stateMutability": "payable",
|
|
869
|
+
"type": "function"
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"inputs": [],
|
|
873
|
+
"name": "renounceOwnership",
|
|
874
|
+
"outputs": [],
|
|
875
|
+
"stateMutability": "nonpayable",
|
|
876
|
+
"type": "function"
|
|
877
|
+
},
|
|
878
|
+
{
|
|
879
|
+
"inputs": [
|
|
880
|
+
{
|
|
881
|
+
"internalType": "uint256",
|
|
882
|
+
"name": "loanId",
|
|
883
|
+
"type": "uint256"
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
"internalType": "uint256",
|
|
887
|
+
"name": "maxRepayBorrowAmount",
|
|
888
|
+
"type": "uint256"
|
|
889
|
+
},
|
|
890
|
+
{
|
|
891
|
+
"internalType": "uint256",
|
|
892
|
+
"name": "collateralCountToReturn",
|
|
893
|
+
"type": "uint256"
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
"internalType": "address payable",
|
|
897
|
+
"name": "beneficiary",
|
|
898
|
+
"type": "address"
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"components": [
|
|
902
|
+
{
|
|
903
|
+
"internalType": "uint256",
|
|
904
|
+
"name": "sigDeadline",
|
|
905
|
+
"type": "uint256"
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
"internalType": "uint160",
|
|
909
|
+
"name": "amount",
|
|
910
|
+
"type": "uint160"
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
"internalType": "uint48",
|
|
914
|
+
"name": "expiration",
|
|
915
|
+
"type": "uint48"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"internalType": "uint48",
|
|
919
|
+
"name": "nonce",
|
|
920
|
+
"type": "uint48"
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
"internalType": "bytes",
|
|
924
|
+
"name": "signature",
|
|
925
|
+
"type": "bytes"
|
|
926
|
+
}
|
|
927
|
+
],
|
|
928
|
+
"internalType": "struct JBSingleAllowance",
|
|
929
|
+
"name": "allowance",
|
|
930
|
+
"type": "tuple"
|
|
931
|
+
}
|
|
932
|
+
],
|
|
933
|
+
"name": "repayLoan",
|
|
934
|
+
"outputs": [
|
|
935
|
+
{
|
|
936
|
+
"internalType": "uint256",
|
|
937
|
+
"name": "paidOffLoanId",
|
|
938
|
+
"type": "uint256"
|
|
939
|
+
},
|
|
940
|
+
{
|
|
941
|
+
"components": [
|
|
942
|
+
{
|
|
943
|
+
"internalType": "uint112",
|
|
944
|
+
"name": "amount",
|
|
945
|
+
"type": "uint112"
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
"internalType": "uint112",
|
|
949
|
+
"name": "collateral",
|
|
950
|
+
"type": "uint112"
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
"internalType": "uint48",
|
|
954
|
+
"name": "createdAt",
|
|
955
|
+
"type": "uint48"
|
|
956
|
+
},
|
|
957
|
+
{
|
|
958
|
+
"internalType": "uint16",
|
|
959
|
+
"name": "prepaidFeePercent",
|
|
960
|
+
"type": "uint16"
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
"internalType": "uint32",
|
|
964
|
+
"name": "prepaidDuration",
|
|
965
|
+
"type": "uint32"
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
"components": [
|
|
969
|
+
{
|
|
970
|
+
"internalType": "address",
|
|
971
|
+
"name": "token",
|
|
972
|
+
"type": "address"
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
976
|
+
"name": "terminal",
|
|
977
|
+
"type": "address"
|
|
978
|
+
}
|
|
979
|
+
],
|
|
980
|
+
"internalType": "struct REVLoanSource",
|
|
981
|
+
"name": "source",
|
|
982
|
+
"type": "tuple"
|
|
983
|
+
}
|
|
984
|
+
],
|
|
985
|
+
"internalType": "struct REVLoan",
|
|
986
|
+
"name": "paidOffloan",
|
|
987
|
+
"type": "tuple"
|
|
988
|
+
}
|
|
989
|
+
],
|
|
990
|
+
"stateMutability": "payable",
|
|
991
|
+
"type": "function"
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
"inputs": [
|
|
995
|
+
{
|
|
996
|
+
"internalType": "uint256",
|
|
997
|
+
"name": "loanId",
|
|
998
|
+
"type": "uint256"
|
|
999
|
+
}
|
|
1000
|
+
],
|
|
1001
|
+
"name": "revnetIdOfLoanWith",
|
|
1002
|
+
"outputs": [
|
|
1003
|
+
{
|
|
1004
|
+
"internalType": "uint256",
|
|
1005
|
+
"name": "",
|
|
1006
|
+
"type": "uint256"
|
|
1007
|
+
}
|
|
1008
|
+
],
|
|
1009
|
+
"stateMutability": "pure",
|
|
1010
|
+
"type": "function"
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
"inputs": [
|
|
1014
|
+
{
|
|
1015
|
+
"internalType": "address",
|
|
1016
|
+
"name": "from",
|
|
1017
|
+
"type": "address"
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
"internalType": "address",
|
|
1021
|
+
"name": "to",
|
|
1022
|
+
"type": "address"
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
"internalType": "uint256",
|
|
1026
|
+
"name": "tokenId",
|
|
1027
|
+
"type": "uint256"
|
|
1028
|
+
}
|
|
1029
|
+
],
|
|
1030
|
+
"name": "safeTransferFrom",
|
|
1031
|
+
"outputs": [],
|
|
1032
|
+
"stateMutability": "nonpayable",
|
|
1033
|
+
"type": "function"
|
|
1034
|
+
},
|
|
1035
|
+
{
|
|
1036
|
+
"inputs": [
|
|
1037
|
+
{
|
|
1038
|
+
"internalType": "address",
|
|
1039
|
+
"name": "from",
|
|
1040
|
+
"type": "address"
|
|
1041
|
+
},
|
|
1042
|
+
{
|
|
1043
|
+
"internalType": "address",
|
|
1044
|
+
"name": "to",
|
|
1045
|
+
"type": "address"
|
|
1046
|
+
},
|
|
1047
|
+
{
|
|
1048
|
+
"internalType": "uint256",
|
|
1049
|
+
"name": "tokenId",
|
|
1050
|
+
"type": "uint256"
|
|
1051
|
+
},
|
|
1052
|
+
{
|
|
1053
|
+
"internalType": "bytes",
|
|
1054
|
+
"name": "data",
|
|
1055
|
+
"type": "bytes"
|
|
1056
|
+
}
|
|
1057
|
+
],
|
|
1058
|
+
"name": "safeTransferFrom",
|
|
1059
|
+
"outputs": [],
|
|
1060
|
+
"stateMutability": "nonpayable",
|
|
1061
|
+
"type": "function"
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
"inputs": [
|
|
1065
|
+
{
|
|
1066
|
+
"internalType": "address",
|
|
1067
|
+
"name": "operator",
|
|
1068
|
+
"type": "address"
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
"internalType": "bool",
|
|
1072
|
+
"name": "approved",
|
|
1073
|
+
"type": "bool"
|
|
1074
|
+
}
|
|
1075
|
+
],
|
|
1076
|
+
"name": "setApprovalForAll",
|
|
1077
|
+
"outputs": [],
|
|
1078
|
+
"stateMutability": "nonpayable",
|
|
1079
|
+
"type": "function"
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
"inputs": [
|
|
1083
|
+
{
|
|
1084
|
+
"internalType": "contract IJBTokenUriResolver",
|
|
1085
|
+
"name": "resolver",
|
|
1086
|
+
"type": "address"
|
|
1087
|
+
}
|
|
1088
|
+
],
|
|
1089
|
+
"name": "setTokenUriResolver",
|
|
1090
|
+
"outputs": [],
|
|
1091
|
+
"stateMutability": "nonpayable",
|
|
1092
|
+
"type": "function"
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
"inputs": [
|
|
1096
|
+
{
|
|
1097
|
+
"internalType": "bytes4",
|
|
1098
|
+
"name": "interfaceId",
|
|
1099
|
+
"type": "bytes4"
|
|
1100
|
+
}
|
|
1101
|
+
],
|
|
1102
|
+
"name": "supportsInterface",
|
|
1103
|
+
"outputs": [
|
|
1104
|
+
{
|
|
1105
|
+
"internalType": "bool",
|
|
1106
|
+
"name": "",
|
|
1107
|
+
"type": "bool"
|
|
1108
|
+
}
|
|
1109
|
+
],
|
|
1110
|
+
"stateMutability": "view",
|
|
1111
|
+
"type": "function"
|
|
1112
|
+
},
|
|
1113
|
+
{
|
|
1114
|
+
"inputs": [],
|
|
1115
|
+
"name": "symbol",
|
|
1116
|
+
"outputs": [
|
|
1117
|
+
{
|
|
1118
|
+
"internalType": "string",
|
|
1119
|
+
"name": "",
|
|
1120
|
+
"type": "string"
|
|
1121
|
+
}
|
|
1122
|
+
],
|
|
1123
|
+
"stateMutability": "view",
|
|
1124
|
+
"type": "function"
|
|
1125
|
+
},
|
|
1126
|
+
{
|
|
1127
|
+
"inputs": [
|
|
1128
|
+
{
|
|
1129
|
+
"internalType": "uint256",
|
|
1130
|
+
"name": "loanId",
|
|
1131
|
+
"type": "uint256"
|
|
1132
|
+
}
|
|
1133
|
+
],
|
|
1134
|
+
"name": "tokenURI",
|
|
1135
|
+
"outputs": [
|
|
1136
|
+
{
|
|
1137
|
+
"internalType": "string",
|
|
1138
|
+
"name": "",
|
|
1139
|
+
"type": "string"
|
|
1140
|
+
}
|
|
1141
|
+
],
|
|
1142
|
+
"stateMutability": "view",
|
|
1143
|
+
"type": "function"
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"inputs": [],
|
|
1147
|
+
"name": "tokenUriResolver",
|
|
1148
|
+
"outputs": [
|
|
1149
|
+
{
|
|
1150
|
+
"internalType": "contract IJBTokenUriResolver",
|
|
1151
|
+
"name": "",
|
|
1152
|
+
"type": "address"
|
|
1153
|
+
}
|
|
1154
|
+
],
|
|
1155
|
+
"stateMutability": "view",
|
|
1156
|
+
"type": "function"
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
"inputs": [
|
|
1160
|
+
{
|
|
1161
|
+
"internalType": "uint256",
|
|
1162
|
+
"name": "revnetId",
|
|
1163
|
+
"type": "uint256"
|
|
1164
|
+
},
|
|
1165
|
+
{
|
|
1166
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1167
|
+
"name": "terminal",
|
|
1168
|
+
"type": "address"
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
"internalType": "address",
|
|
1172
|
+
"name": "token",
|
|
1173
|
+
"type": "address"
|
|
1174
|
+
}
|
|
1175
|
+
],
|
|
1176
|
+
"name": "totalBorrowedFrom",
|
|
1177
|
+
"outputs": [
|
|
1178
|
+
{
|
|
1179
|
+
"internalType": "uint256",
|
|
1180
|
+
"name": "",
|
|
1181
|
+
"type": "uint256"
|
|
1182
|
+
}
|
|
1183
|
+
],
|
|
1184
|
+
"stateMutability": "view",
|
|
1185
|
+
"type": "function"
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
"inputs": [
|
|
1189
|
+
{
|
|
1190
|
+
"internalType": "uint256",
|
|
1191
|
+
"name": "revnetId",
|
|
1192
|
+
"type": "uint256"
|
|
1193
|
+
}
|
|
1194
|
+
],
|
|
1195
|
+
"name": "totalCollateralOf",
|
|
1196
|
+
"outputs": [
|
|
1197
|
+
{
|
|
1198
|
+
"internalType": "uint256",
|
|
1199
|
+
"name": "",
|
|
1200
|
+
"type": "uint256"
|
|
1201
|
+
}
|
|
1202
|
+
],
|
|
1203
|
+
"stateMutability": "view",
|
|
1204
|
+
"type": "function"
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
"inputs": [
|
|
1208
|
+
{
|
|
1209
|
+
"internalType": "address",
|
|
1210
|
+
"name": "from",
|
|
1211
|
+
"type": "address"
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
"internalType": "address",
|
|
1215
|
+
"name": "to",
|
|
1216
|
+
"type": "address"
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
"internalType": "uint256",
|
|
1220
|
+
"name": "tokenId",
|
|
1221
|
+
"type": "uint256"
|
|
1222
|
+
}
|
|
1223
|
+
],
|
|
1224
|
+
"name": "transferFrom",
|
|
1225
|
+
"outputs": [],
|
|
1226
|
+
"stateMutability": "nonpayable",
|
|
1227
|
+
"type": "function"
|
|
1228
|
+
},
|
|
1229
|
+
{
|
|
1230
|
+
"inputs": [
|
|
1231
|
+
{
|
|
1232
|
+
"internalType": "address",
|
|
1233
|
+
"name": "newOwner",
|
|
1234
|
+
"type": "address"
|
|
1235
|
+
}
|
|
1236
|
+
],
|
|
1237
|
+
"name": "transferOwnership",
|
|
1238
|
+
"outputs": [],
|
|
1239
|
+
"stateMutability": "nonpayable",
|
|
1240
|
+
"type": "function"
|
|
1241
|
+
},
|
|
1242
|
+
{
|
|
1243
|
+
"inputs": [],
|
|
1244
|
+
"name": "trustedForwarder",
|
|
1245
|
+
"outputs": [
|
|
1246
|
+
{
|
|
1247
|
+
"internalType": "address",
|
|
1248
|
+
"name": "",
|
|
1249
|
+
"type": "address"
|
|
1250
|
+
}
|
|
1251
|
+
],
|
|
1252
|
+
"stateMutability": "view",
|
|
1253
|
+
"type": "function"
|
|
1254
|
+
},
|
|
1255
|
+
{
|
|
1256
|
+
"anonymous": false,
|
|
1257
|
+
"inputs": [
|
|
1258
|
+
{
|
|
1259
|
+
"indexed": true,
|
|
1260
|
+
"internalType": "address",
|
|
1261
|
+
"name": "owner",
|
|
1262
|
+
"type": "address"
|
|
1263
|
+
},
|
|
1264
|
+
{
|
|
1265
|
+
"indexed": true,
|
|
1266
|
+
"internalType": "address",
|
|
1267
|
+
"name": "approved",
|
|
1268
|
+
"type": "address"
|
|
1269
|
+
},
|
|
1270
|
+
{
|
|
1271
|
+
"indexed": true,
|
|
1272
|
+
"internalType": "uint256",
|
|
1273
|
+
"name": "tokenId",
|
|
1274
|
+
"type": "uint256"
|
|
1275
|
+
}
|
|
1276
|
+
],
|
|
1277
|
+
"name": "Approval",
|
|
1278
|
+
"type": "event"
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
"anonymous": false,
|
|
1282
|
+
"inputs": [
|
|
1283
|
+
{
|
|
1284
|
+
"indexed": true,
|
|
1285
|
+
"internalType": "address",
|
|
1286
|
+
"name": "owner",
|
|
1287
|
+
"type": "address"
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
"indexed": true,
|
|
1291
|
+
"internalType": "address",
|
|
1292
|
+
"name": "operator",
|
|
1293
|
+
"type": "address"
|
|
1294
|
+
},
|
|
1295
|
+
{
|
|
1296
|
+
"indexed": false,
|
|
1297
|
+
"internalType": "bool",
|
|
1298
|
+
"name": "approved",
|
|
1299
|
+
"type": "bool"
|
|
1300
|
+
}
|
|
1301
|
+
],
|
|
1302
|
+
"name": "ApprovalForAll",
|
|
1303
|
+
"type": "event"
|
|
1304
|
+
},
|
|
1305
|
+
{
|
|
1306
|
+
"anonymous": false,
|
|
1307
|
+
"inputs": [
|
|
1308
|
+
{
|
|
1309
|
+
"indexed": true,
|
|
1310
|
+
"internalType": "uint256",
|
|
1311
|
+
"name": "loanId",
|
|
1312
|
+
"type": "uint256"
|
|
1313
|
+
},
|
|
1314
|
+
{
|
|
1315
|
+
"indexed": true,
|
|
1316
|
+
"internalType": "uint256",
|
|
1317
|
+
"name": "revnetId",
|
|
1318
|
+
"type": "uint256"
|
|
1319
|
+
},
|
|
1320
|
+
{
|
|
1321
|
+
"components": [
|
|
1322
|
+
{
|
|
1323
|
+
"internalType": "uint112",
|
|
1324
|
+
"name": "amount",
|
|
1325
|
+
"type": "uint112"
|
|
1326
|
+
},
|
|
1327
|
+
{
|
|
1328
|
+
"internalType": "uint112",
|
|
1329
|
+
"name": "collateral",
|
|
1330
|
+
"type": "uint112"
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
"internalType": "uint48",
|
|
1334
|
+
"name": "createdAt",
|
|
1335
|
+
"type": "uint48"
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
"internalType": "uint16",
|
|
1339
|
+
"name": "prepaidFeePercent",
|
|
1340
|
+
"type": "uint16"
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
"internalType": "uint32",
|
|
1344
|
+
"name": "prepaidDuration",
|
|
1345
|
+
"type": "uint32"
|
|
1346
|
+
},
|
|
1347
|
+
{
|
|
1348
|
+
"components": [
|
|
1349
|
+
{
|
|
1350
|
+
"internalType": "address",
|
|
1351
|
+
"name": "token",
|
|
1352
|
+
"type": "address"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1356
|
+
"name": "terminal",
|
|
1357
|
+
"type": "address"
|
|
1358
|
+
}
|
|
1359
|
+
],
|
|
1360
|
+
"internalType": "struct REVLoanSource",
|
|
1361
|
+
"name": "source",
|
|
1362
|
+
"type": "tuple"
|
|
1363
|
+
}
|
|
1364
|
+
],
|
|
1365
|
+
"indexed": false,
|
|
1366
|
+
"internalType": "struct REVLoan",
|
|
1367
|
+
"name": "loan",
|
|
1368
|
+
"type": "tuple"
|
|
1369
|
+
},
|
|
1370
|
+
{
|
|
1371
|
+
"components": [
|
|
1372
|
+
{
|
|
1373
|
+
"internalType": "address",
|
|
1374
|
+
"name": "token",
|
|
1375
|
+
"type": "address"
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1379
|
+
"name": "terminal",
|
|
1380
|
+
"type": "address"
|
|
1381
|
+
}
|
|
1382
|
+
],
|
|
1383
|
+
"indexed": false,
|
|
1384
|
+
"internalType": "struct REVLoanSource",
|
|
1385
|
+
"name": "source",
|
|
1386
|
+
"type": "tuple"
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
"indexed": false,
|
|
1390
|
+
"internalType": "uint256",
|
|
1391
|
+
"name": "borrowAmount",
|
|
1392
|
+
"type": "uint256"
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
"indexed": false,
|
|
1396
|
+
"internalType": "uint256",
|
|
1397
|
+
"name": "collateralCount",
|
|
1398
|
+
"type": "uint256"
|
|
1399
|
+
},
|
|
1400
|
+
{
|
|
1401
|
+
"indexed": false,
|
|
1402
|
+
"internalType": "uint256",
|
|
1403
|
+
"name": "sourceFeeAmount",
|
|
1404
|
+
"type": "uint256"
|
|
1405
|
+
},
|
|
1406
|
+
{
|
|
1407
|
+
"indexed": false,
|
|
1408
|
+
"internalType": "address payable",
|
|
1409
|
+
"name": "beneficiary",
|
|
1410
|
+
"type": "address"
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
"indexed": false,
|
|
1414
|
+
"internalType": "address",
|
|
1415
|
+
"name": "caller",
|
|
1416
|
+
"type": "address"
|
|
1417
|
+
}
|
|
1418
|
+
],
|
|
1419
|
+
"name": "Borrow",
|
|
1420
|
+
"type": "event"
|
|
1421
|
+
},
|
|
1422
|
+
{
|
|
1423
|
+
"anonymous": false,
|
|
1424
|
+
"inputs": [
|
|
1425
|
+
{
|
|
1426
|
+
"indexed": true,
|
|
1427
|
+
"internalType": "uint256",
|
|
1428
|
+
"name": "loanId",
|
|
1429
|
+
"type": "uint256"
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
"indexed": true,
|
|
1433
|
+
"internalType": "uint256",
|
|
1434
|
+
"name": "revnetId",
|
|
1435
|
+
"type": "uint256"
|
|
1436
|
+
},
|
|
1437
|
+
{
|
|
1438
|
+
"components": [
|
|
1439
|
+
{
|
|
1440
|
+
"internalType": "uint112",
|
|
1441
|
+
"name": "amount",
|
|
1442
|
+
"type": "uint112"
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
"internalType": "uint112",
|
|
1446
|
+
"name": "collateral",
|
|
1447
|
+
"type": "uint112"
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
"internalType": "uint48",
|
|
1451
|
+
"name": "createdAt",
|
|
1452
|
+
"type": "uint48"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"internalType": "uint16",
|
|
1456
|
+
"name": "prepaidFeePercent",
|
|
1457
|
+
"type": "uint16"
|
|
1458
|
+
},
|
|
1459
|
+
{
|
|
1460
|
+
"internalType": "uint32",
|
|
1461
|
+
"name": "prepaidDuration",
|
|
1462
|
+
"type": "uint32"
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
"components": [
|
|
1466
|
+
{
|
|
1467
|
+
"internalType": "address",
|
|
1468
|
+
"name": "token",
|
|
1469
|
+
"type": "address"
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1473
|
+
"name": "terminal",
|
|
1474
|
+
"type": "address"
|
|
1475
|
+
}
|
|
1476
|
+
],
|
|
1477
|
+
"internalType": "struct REVLoanSource",
|
|
1478
|
+
"name": "source",
|
|
1479
|
+
"type": "tuple"
|
|
1480
|
+
}
|
|
1481
|
+
],
|
|
1482
|
+
"indexed": false,
|
|
1483
|
+
"internalType": "struct REVLoan",
|
|
1484
|
+
"name": "loan",
|
|
1485
|
+
"type": "tuple"
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"indexed": false,
|
|
1489
|
+
"internalType": "address",
|
|
1490
|
+
"name": "caller",
|
|
1491
|
+
"type": "address"
|
|
1492
|
+
}
|
|
1493
|
+
],
|
|
1494
|
+
"name": "Liquidate",
|
|
1495
|
+
"type": "event"
|
|
1496
|
+
},
|
|
1497
|
+
{
|
|
1498
|
+
"anonymous": false,
|
|
1499
|
+
"inputs": [
|
|
1500
|
+
{
|
|
1501
|
+
"indexed": true,
|
|
1502
|
+
"internalType": "address",
|
|
1503
|
+
"name": "previousOwner",
|
|
1504
|
+
"type": "address"
|
|
1505
|
+
},
|
|
1506
|
+
{
|
|
1507
|
+
"indexed": true,
|
|
1508
|
+
"internalType": "address",
|
|
1509
|
+
"name": "newOwner",
|
|
1510
|
+
"type": "address"
|
|
1511
|
+
}
|
|
1512
|
+
],
|
|
1513
|
+
"name": "OwnershipTransferred",
|
|
1514
|
+
"type": "event"
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
"anonymous": false,
|
|
1518
|
+
"inputs": [
|
|
1519
|
+
{
|
|
1520
|
+
"indexed": true,
|
|
1521
|
+
"internalType": "uint256",
|
|
1522
|
+
"name": "loanId",
|
|
1523
|
+
"type": "uint256"
|
|
1524
|
+
},
|
|
1525
|
+
{
|
|
1526
|
+
"indexed": true,
|
|
1527
|
+
"internalType": "uint256",
|
|
1528
|
+
"name": "revnetId",
|
|
1529
|
+
"type": "uint256"
|
|
1530
|
+
},
|
|
1531
|
+
{
|
|
1532
|
+
"indexed": true,
|
|
1533
|
+
"internalType": "uint256",
|
|
1534
|
+
"name": "reallocatedLoanId",
|
|
1535
|
+
"type": "uint256"
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"components": [
|
|
1539
|
+
{
|
|
1540
|
+
"internalType": "uint112",
|
|
1541
|
+
"name": "amount",
|
|
1542
|
+
"type": "uint112"
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"internalType": "uint112",
|
|
1546
|
+
"name": "collateral",
|
|
1547
|
+
"type": "uint112"
|
|
1548
|
+
},
|
|
1549
|
+
{
|
|
1550
|
+
"internalType": "uint48",
|
|
1551
|
+
"name": "createdAt",
|
|
1552
|
+
"type": "uint48"
|
|
1553
|
+
},
|
|
1554
|
+
{
|
|
1555
|
+
"internalType": "uint16",
|
|
1556
|
+
"name": "prepaidFeePercent",
|
|
1557
|
+
"type": "uint16"
|
|
1558
|
+
},
|
|
1559
|
+
{
|
|
1560
|
+
"internalType": "uint32",
|
|
1561
|
+
"name": "prepaidDuration",
|
|
1562
|
+
"type": "uint32"
|
|
1563
|
+
},
|
|
1564
|
+
{
|
|
1565
|
+
"components": [
|
|
1566
|
+
{
|
|
1567
|
+
"internalType": "address",
|
|
1568
|
+
"name": "token",
|
|
1569
|
+
"type": "address"
|
|
1570
|
+
},
|
|
1571
|
+
{
|
|
1572
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1573
|
+
"name": "terminal",
|
|
1574
|
+
"type": "address"
|
|
1575
|
+
}
|
|
1576
|
+
],
|
|
1577
|
+
"internalType": "struct REVLoanSource",
|
|
1578
|
+
"name": "source",
|
|
1579
|
+
"type": "tuple"
|
|
1580
|
+
}
|
|
1581
|
+
],
|
|
1582
|
+
"indexed": false,
|
|
1583
|
+
"internalType": "struct REVLoan",
|
|
1584
|
+
"name": "reallocatedLoan",
|
|
1585
|
+
"type": "tuple"
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"indexed": false,
|
|
1589
|
+
"internalType": "uint256",
|
|
1590
|
+
"name": "removedcollateralCount",
|
|
1591
|
+
"type": "uint256"
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
"indexed": false,
|
|
1595
|
+
"internalType": "address",
|
|
1596
|
+
"name": "caller",
|
|
1597
|
+
"type": "address"
|
|
1598
|
+
}
|
|
1599
|
+
],
|
|
1600
|
+
"name": "ReallocateCollateral",
|
|
1601
|
+
"type": "event"
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"anonymous": false,
|
|
1605
|
+
"inputs": [
|
|
1606
|
+
{
|
|
1607
|
+
"indexed": true,
|
|
1608
|
+
"internalType": "uint256",
|
|
1609
|
+
"name": "loanId",
|
|
1610
|
+
"type": "uint256"
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
"indexed": true,
|
|
1614
|
+
"internalType": "uint256",
|
|
1615
|
+
"name": "revnetId",
|
|
1616
|
+
"type": "uint256"
|
|
1617
|
+
},
|
|
1618
|
+
{
|
|
1619
|
+
"indexed": true,
|
|
1620
|
+
"internalType": "uint256",
|
|
1621
|
+
"name": "paidOffLoanId",
|
|
1622
|
+
"type": "uint256"
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
"components": [
|
|
1626
|
+
{
|
|
1627
|
+
"internalType": "uint112",
|
|
1628
|
+
"name": "amount",
|
|
1629
|
+
"type": "uint112"
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"internalType": "uint112",
|
|
1633
|
+
"name": "collateral",
|
|
1634
|
+
"type": "uint112"
|
|
1635
|
+
},
|
|
1636
|
+
{
|
|
1637
|
+
"internalType": "uint48",
|
|
1638
|
+
"name": "createdAt",
|
|
1639
|
+
"type": "uint48"
|
|
1640
|
+
},
|
|
1641
|
+
{
|
|
1642
|
+
"internalType": "uint16",
|
|
1643
|
+
"name": "prepaidFeePercent",
|
|
1644
|
+
"type": "uint16"
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"internalType": "uint32",
|
|
1648
|
+
"name": "prepaidDuration",
|
|
1649
|
+
"type": "uint32"
|
|
1650
|
+
},
|
|
1651
|
+
{
|
|
1652
|
+
"components": [
|
|
1653
|
+
{
|
|
1654
|
+
"internalType": "address",
|
|
1655
|
+
"name": "token",
|
|
1656
|
+
"type": "address"
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1660
|
+
"name": "terminal",
|
|
1661
|
+
"type": "address"
|
|
1662
|
+
}
|
|
1663
|
+
],
|
|
1664
|
+
"internalType": "struct REVLoanSource",
|
|
1665
|
+
"name": "source",
|
|
1666
|
+
"type": "tuple"
|
|
1667
|
+
}
|
|
1668
|
+
],
|
|
1669
|
+
"indexed": false,
|
|
1670
|
+
"internalType": "struct REVLoan",
|
|
1671
|
+
"name": "loan",
|
|
1672
|
+
"type": "tuple"
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
"components": [
|
|
1676
|
+
{
|
|
1677
|
+
"internalType": "uint112",
|
|
1678
|
+
"name": "amount",
|
|
1679
|
+
"type": "uint112"
|
|
1680
|
+
},
|
|
1681
|
+
{
|
|
1682
|
+
"internalType": "uint112",
|
|
1683
|
+
"name": "collateral",
|
|
1684
|
+
"type": "uint112"
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
"internalType": "uint48",
|
|
1688
|
+
"name": "createdAt",
|
|
1689
|
+
"type": "uint48"
|
|
1690
|
+
},
|
|
1691
|
+
{
|
|
1692
|
+
"internalType": "uint16",
|
|
1693
|
+
"name": "prepaidFeePercent",
|
|
1694
|
+
"type": "uint16"
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
"internalType": "uint32",
|
|
1698
|
+
"name": "prepaidDuration",
|
|
1699
|
+
"type": "uint32"
|
|
1700
|
+
},
|
|
1701
|
+
{
|
|
1702
|
+
"components": [
|
|
1703
|
+
{
|
|
1704
|
+
"internalType": "address",
|
|
1705
|
+
"name": "token",
|
|
1706
|
+
"type": "address"
|
|
1707
|
+
},
|
|
1708
|
+
{
|
|
1709
|
+
"internalType": "contract IJBPayoutTerminal",
|
|
1710
|
+
"name": "terminal",
|
|
1711
|
+
"type": "address"
|
|
1712
|
+
}
|
|
1713
|
+
],
|
|
1714
|
+
"internalType": "struct REVLoanSource",
|
|
1715
|
+
"name": "source",
|
|
1716
|
+
"type": "tuple"
|
|
1717
|
+
}
|
|
1718
|
+
],
|
|
1719
|
+
"indexed": false,
|
|
1720
|
+
"internalType": "struct REVLoan",
|
|
1721
|
+
"name": "paidOffLoan",
|
|
1722
|
+
"type": "tuple"
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
"indexed": false,
|
|
1726
|
+
"internalType": "uint256",
|
|
1727
|
+
"name": "repayBorrowAmount",
|
|
1728
|
+
"type": "uint256"
|
|
1729
|
+
},
|
|
1730
|
+
{
|
|
1731
|
+
"indexed": false,
|
|
1732
|
+
"internalType": "uint256",
|
|
1733
|
+
"name": "sourceFeeAmount",
|
|
1734
|
+
"type": "uint256"
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
"indexed": false,
|
|
1738
|
+
"internalType": "uint256",
|
|
1739
|
+
"name": "collateralCountToReturn",
|
|
1740
|
+
"type": "uint256"
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
"indexed": false,
|
|
1744
|
+
"internalType": "address payable",
|
|
1745
|
+
"name": "beneficiary",
|
|
1746
|
+
"type": "address"
|
|
1747
|
+
},
|
|
1748
|
+
{
|
|
1749
|
+
"indexed": false,
|
|
1750
|
+
"internalType": "address",
|
|
1751
|
+
"name": "caller",
|
|
1752
|
+
"type": "address"
|
|
1753
|
+
}
|
|
1754
|
+
],
|
|
1755
|
+
"name": "RepayLoan",
|
|
1756
|
+
"type": "event"
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"anonymous": false,
|
|
1760
|
+
"inputs": [
|
|
1761
|
+
{
|
|
1762
|
+
"indexed": true,
|
|
1763
|
+
"internalType": "contract IJBTokenUriResolver",
|
|
1764
|
+
"name": "resolver",
|
|
1765
|
+
"type": "address"
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
"indexed": false,
|
|
1769
|
+
"internalType": "address",
|
|
1770
|
+
"name": "caller",
|
|
1771
|
+
"type": "address"
|
|
1772
|
+
}
|
|
1773
|
+
],
|
|
1774
|
+
"name": "SetTokenUriResolver",
|
|
1775
|
+
"type": "event"
|
|
1776
|
+
},
|
|
1777
|
+
{
|
|
1778
|
+
"anonymous": false,
|
|
1779
|
+
"inputs": [
|
|
1780
|
+
{
|
|
1781
|
+
"indexed": true,
|
|
1782
|
+
"internalType": "address",
|
|
1783
|
+
"name": "from",
|
|
1784
|
+
"type": "address"
|
|
1785
|
+
},
|
|
1786
|
+
{
|
|
1787
|
+
"indexed": true,
|
|
1788
|
+
"internalType": "address",
|
|
1789
|
+
"name": "to",
|
|
1790
|
+
"type": "address"
|
|
1791
|
+
},
|
|
1792
|
+
{
|
|
1793
|
+
"indexed": true,
|
|
1794
|
+
"internalType": "uint256",
|
|
1795
|
+
"name": "tokenId",
|
|
1796
|
+
"type": "uint256"
|
|
1797
|
+
}
|
|
1798
|
+
],
|
|
1799
|
+
"name": "Transfer",
|
|
1800
|
+
"type": "event"
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
"inputs": [
|
|
1804
|
+
{
|
|
1805
|
+
"internalType": "address",
|
|
1806
|
+
"name": "sender",
|
|
1807
|
+
"type": "address"
|
|
1808
|
+
},
|
|
1809
|
+
{
|
|
1810
|
+
"internalType": "uint256",
|
|
1811
|
+
"name": "tokenId",
|
|
1812
|
+
"type": "uint256"
|
|
1813
|
+
},
|
|
1814
|
+
{
|
|
1815
|
+
"internalType": "address",
|
|
1816
|
+
"name": "owner",
|
|
1817
|
+
"type": "address"
|
|
1818
|
+
}
|
|
1819
|
+
],
|
|
1820
|
+
"name": "ERC721IncorrectOwner",
|
|
1821
|
+
"type": "error"
|
|
1822
|
+
},
|
|
1823
|
+
{
|
|
1824
|
+
"inputs": [
|
|
1825
|
+
{
|
|
1826
|
+
"internalType": "address",
|
|
1827
|
+
"name": "operator",
|
|
1828
|
+
"type": "address"
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
"internalType": "uint256",
|
|
1832
|
+
"name": "tokenId",
|
|
1833
|
+
"type": "uint256"
|
|
1834
|
+
}
|
|
1835
|
+
],
|
|
1836
|
+
"name": "ERC721InsufficientApproval",
|
|
1837
|
+
"type": "error"
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"inputs": [
|
|
1841
|
+
{
|
|
1842
|
+
"internalType": "address",
|
|
1843
|
+
"name": "approver",
|
|
1844
|
+
"type": "address"
|
|
1845
|
+
}
|
|
1846
|
+
],
|
|
1847
|
+
"name": "ERC721InvalidApprover",
|
|
1848
|
+
"type": "error"
|
|
1849
|
+
},
|
|
1850
|
+
{
|
|
1851
|
+
"inputs": [
|
|
1852
|
+
{
|
|
1853
|
+
"internalType": "address",
|
|
1854
|
+
"name": "operator",
|
|
1855
|
+
"type": "address"
|
|
1856
|
+
}
|
|
1857
|
+
],
|
|
1858
|
+
"name": "ERC721InvalidOperator",
|
|
1859
|
+
"type": "error"
|
|
1860
|
+
},
|
|
1861
|
+
{
|
|
1862
|
+
"inputs": [
|
|
1863
|
+
{
|
|
1864
|
+
"internalType": "address",
|
|
1865
|
+
"name": "owner",
|
|
1866
|
+
"type": "address"
|
|
1867
|
+
}
|
|
1868
|
+
],
|
|
1869
|
+
"name": "ERC721InvalidOwner",
|
|
1870
|
+
"type": "error"
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"inputs": [
|
|
1874
|
+
{
|
|
1875
|
+
"internalType": "address",
|
|
1876
|
+
"name": "receiver",
|
|
1877
|
+
"type": "address"
|
|
1878
|
+
}
|
|
1879
|
+
],
|
|
1880
|
+
"name": "ERC721InvalidReceiver",
|
|
1881
|
+
"type": "error"
|
|
1882
|
+
},
|
|
1883
|
+
{
|
|
1884
|
+
"inputs": [
|
|
1885
|
+
{
|
|
1886
|
+
"internalType": "address",
|
|
1887
|
+
"name": "sender",
|
|
1888
|
+
"type": "address"
|
|
1889
|
+
}
|
|
1890
|
+
],
|
|
1891
|
+
"name": "ERC721InvalidSender",
|
|
1892
|
+
"type": "error"
|
|
1893
|
+
},
|
|
1894
|
+
{
|
|
1895
|
+
"inputs": [
|
|
1896
|
+
{
|
|
1897
|
+
"internalType": "uint256",
|
|
1898
|
+
"name": "tokenId",
|
|
1899
|
+
"type": "uint256"
|
|
1900
|
+
}
|
|
1901
|
+
],
|
|
1902
|
+
"name": "ERC721NonexistentToken",
|
|
1903
|
+
"type": "error"
|
|
1904
|
+
},
|
|
1905
|
+
{
|
|
1906
|
+
"inputs": [],
|
|
1907
|
+
"name": "FailedCall",
|
|
1908
|
+
"type": "error"
|
|
1909
|
+
},
|
|
1910
|
+
{
|
|
1911
|
+
"inputs": [
|
|
1912
|
+
{
|
|
1913
|
+
"internalType": "uint256",
|
|
1914
|
+
"name": "balance",
|
|
1915
|
+
"type": "uint256"
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"internalType": "uint256",
|
|
1919
|
+
"name": "needed",
|
|
1920
|
+
"type": "uint256"
|
|
1921
|
+
}
|
|
1922
|
+
],
|
|
1923
|
+
"name": "InsufficientBalance",
|
|
1924
|
+
"type": "error"
|
|
1925
|
+
},
|
|
1926
|
+
{
|
|
1927
|
+
"inputs": [
|
|
1928
|
+
{
|
|
1929
|
+
"internalType": "address",
|
|
1930
|
+
"name": "owner",
|
|
1931
|
+
"type": "address"
|
|
1932
|
+
}
|
|
1933
|
+
],
|
|
1934
|
+
"name": "OwnableInvalidOwner",
|
|
1935
|
+
"type": "error"
|
|
1936
|
+
},
|
|
1937
|
+
{
|
|
1938
|
+
"inputs": [
|
|
1939
|
+
{
|
|
1940
|
+
"internalType": "address",
|
|
1941
|
+
"name": "account",
|
|
1942
|
+
"type": "address"
|
|
1943
|
+
}
|
|
1944
|
+
],
|
|
1945
|
+
"name": "OwnableUnauthorizedAccount",
|
|
1946
|
+
"type": "error"
|
|
1947
|
+
},
|
|
1948
|
+
{
|
|
1949
|
+
"inputs": [
|
|
1950
|
+
{
|
|
1951
|
+
"internalType": "uint256",
|
|
1952
|
+
"name": "x",
|
|
1953
|
+
"type": "uint256"
|
|
1954
|
+
},
|
|
1955
|
+
{
|
|
1956
|
+
"internalType": "uint256",
|
|
1957
|
+
"name": "y",
|
|
1958
|
+
"type": "uint256"
|
|
1959
|
+
},
|
|
1960
|
+
{
|
|
1961
|
+
"internalType": "uint256",
|
|
1962
|
+
"name": "denominator",
|
|
1963
|
+
"type": "uint256"
|
|
1964
|
+
}
|
|
1965
|
+
],
|
|
1966
|
+
"name": "PRBMath_MulDiv_Overflow",
|
|
1967
|
+
"type": "error"
|
|
1968
|
+
},
|
|
1969
|
+
{
|
|
1970
|
+
"inputs": [
|
|
1971
|
+
{
|
|
1972
|
+
"internalType": "uint256",
|
|
1973
|
+
"name": "collateralToReturn",
|
|
1974
|
+
"type": "uint256"
|
|
1975
|
+
},
|
|
1976
|
+
{
|
|
1977
|
+
"internalType": "uint256",
|
|
1978
|
+
"name": "loanCollateral",
|
|
1979
|
+
"type": "uint256"
|
|
1980
|
+
}
|
|
1981
|
+
],
|
|
1982
|
+
"name": "REVLoans_CollateralExceedsLoan",
|
|
1983
|
+
"type": "error"
|
|
1984
|
+
},
|
|
1985
|
+
{
|
|
1986
|
+
"inputs": [
|
|
1987
|
+
{
|
|
1988
|
+
"internalType": "uint256",
|
|
1989
|
+
"name": "prepaidFeePercent",
|
|
1990
|
+
"type": "uint256"
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
"internalType": "uint256",
|
|
1994
|
+
"name": "min",
|
|
1995
|
+
"type": "uint256"
|
|
1996
|
+
},
|
|
1997
|
+
{
|
|
1998
|
+
"internalType": "uint256",
|
|
1999
|
+
"name": "max",
|
|
2000
|
+
"type": "uint256"
|
|
2001
|
+
}
|
|
2002
|
+
],
|
|
2003
|
+
"name": "REVLoans_InvalidPrepaidFeePercent",
|
|
2004
|
+
"type": "error"
|
|
2005
|
+
},
|
|
2006
|
+
{
|
|
2007
|
+
"inputs": [
|
|
2008
|
+
{
|
|
2009
|
+
"internalType": "uint256",
|
|
2010
|
+
"name": "timeSinceLoanCreated",
|
|
2011
|
+
"type": "uint256"
|
|
2012
|
+
},
|
|
2013
|
+
{
|
|
2014
|
+
"internalType": "uint256",
|
|
2015
|
+
"name": "loanLiquidationDuration",
|
|
2016
|
+
"type": "uint256"
|
|
2017
|
+
}
|
|
2018
|
+
],
|
|
2019
|
+
"name": "REVLoans_LoanExpired",
|
|
2020
|
+
"type": "error"
|
|
2021
|
+
},
|
|
2022
|
+
{
|
|
2023
|
+
"inputs": [
|
|
2024
|
+
{
|
|
2025
|
+
"internalType": "uint256",
|
|
2026
|
+
"name": "newBorrowAmount",
|
|
2027
|
+
"type": "uint256"
|
|
2028
|
+
},
|
|
2029
|
+
{
|
|
2030
|
+
"internalType": "uint256",
|
|
2031
|
+
"name": "loanAmount",
|
|
2032
|
+
"type": "uint256"
|
|
2033
|
+
}
|
|
2034
|
+
],
|
|
2035
|
+
"name": "REVLoans_NewBorrowAmountGreaterThanLoanAmount",
|
|
2036
|
+
"type": "error"
|
|
2037
|
+
},
|
|
2038
|
+
{
|
|
2039
|
+
"inputs": [],
|
|
2040
|
+
"name": "REVLoans_NoMsgValueAllowed",
|
|
2041
|
+
"type": "error"
|
|
2042
|
+
},
|
|
2043
|
+
{
|
|
2044
|
+
"inputs": [],
|
|
2045
|
+
"name": "REVLoans_NotEnoughCollateral",
|
|
2046
|
+
"type": "error"
|
|
2047
|
+
},
|
|
2048
|
+
{
|
|
2049
|
+
"inputs": [
|
|
2050
|
+
{
|
|
2051
|
+
"internalType": "uint256",
|
|
2052
|
+
"name": "maxRepayBorrowAmount",
|
|
2053
|
+
"type": "uint256"
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
"internalType": "uint256",
|
|
2057
|
+
"name": "repayBorrowAmount",
|
|
2058
|
+
"type": "uint256"
|
|
2059
|
+
}
|
|
2060
|
+
],
|
|
2061
|
+
"name": "REVLoans_OverMaxRepayBorrowAmount",
|
|
2062
|
+
"type": "error"
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
"inputs": [
|
|
2066
|
+
{
|
|
2067
|
+
"internalType": "uint256",
|
|
2068
|
+
"name": "value",
|
|
2069
|
+
"type": "uint256"
|
|
2070
|
+
},
|
|
2071
|
+
{
|
|
2072
|
+
"internalType": "uint256",
|
|
2073
|
+
"name": "limit",
|
|
2074
|
+
"type": "uint256"
|
|
2075
|
+
}
|
|
2076
|
+
],
|
|
2077
|
+
"name": "REVLoans_OverflowAlert",
|
|
2078
|
+
"type": "error"
|
|
2079
|
+
},
|
|
2080
|
+
{
|
|
2081
|
+
"inputs": [
|
|
2082
|
+
{
|
|
2083
|
+
"internalType": "uint256",
|
|
2084
|
+
"name": "allowanceAmount",
|
|
2085
|
+
"type": "uint256"
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
"internalType": "uint256",
|
|
2089
|
+
"name": "requiredAmount",
|
|
2090
|
+
"type": "uint256"
|
|
2091
|
+
}
|
|
2092
|
+
],
|
|
2093
|
+
"name": "REVLoans_PermitAllowanceNotEnough",
|
|
2094
|
+
"type": "error"
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
"inputs": [
|
|
2098
|
+
{
|
|
2099
|
+
"internalType": "uint256",
|
|
2100
|
+
"name": "newBorrowAmount",
|
|
2101
|
+
"type": "uint256"
|
|
2102
|
+
},
|
|
2103
|
+
{
|
|
2104
|
+
"internalType": "uint256",
|
|
2105
|
+
"name": "loanAmount",
|
|
2106
|
+
"type": "uint256"
|
|
2107
|
+
}
|
|
2108
|
+
],
|
|
2109
|
+
"name": "REVLoans_ReallocatingMoreCollateralThanBorrowedAmountAllows",
|
|
2110
|
+
"type": "error"
|
|
2111
|
+
},
|
|
2112
|
+
{
|
|
2113
|
+
"inputs": [
|
|
2114
|
+
{
|
|
2115
|
+
"internalType": "address",
|
|
2116
|
+
"name": "revnetOwner",
|
|
2117
|
+
"type": "address"
|
|
2118
|
+
},
|
|
2119
|
+
{
|
|
2120
|
+
"internalType": "address",
|
|
2121
|
+
"name": "revnets",
|
|
2122
|
+
"type": "address"
|
|
2123
|
+
}
|
|
2124
|
+
],
|
|
2125
|
+
"name": "REVLoans_RevnetsMismatch",
|
|
2126
|
+
"type": "error"
|
|
2127
|
+
},
|
|
2128
|
+
{
|
|
2129
|
+
"inputs": [
|
|
2130
|
+
{
|
|
2131
|
+
"internalType": "address",
|
|
2132
|
+
"name": "caller",
|
|
2133
|
+
"type": "address"
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
"internalType": "address",
|
|
2137
|
+
"name": "owner",
|
|
2138
|
+
"type": "address"
|
|
2139
|
+
}
|
|
2140
|
+
],
|
|
2141
|
+
"name": "REVLoans_Unauthorized",
|
|
2142
|
+
"type": "error"
|
|
2143
|
+
},
|
|
2144
|
+
{
|
|
2145
|
+
"inputs": [
|
|
2146
|
+
{
|
|
2147
|
+
"internalType": "uint256",
|
|
2148
|
+
"name": "minBorrowAmount",
|
|
2149
|
+
"type": "uint256"
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
"internalType": "uint256",
|
|
2153
|
+
"name": "borrowAmount",
|
|
2154
|
+
"type": "uint256"
|
|
2155
|
+
}
|
|
2156
|
+
],
|
|
2157
|
+
"name": "REVLoans_UnderMinBorrowAmount",
|
|
2158
|
+
"type": "error"
|
|
2159
|
+
},
|
|
2160
|
+
{
|
|
2161
|
+
"inputs": [],
|
|
2162
|
+
"name": "REVLoans_ZeroCollateralLoanIsInvalid",
|
|
2163
|
+
"type": "error"
|
|
2164
|
+
},
|
|
2165
|
+
{
|
|
2166
|
+
"inputs": [
|
|
2167
|
+
{
|
|
2168
|
+
"internalType": "address",
|
|
2169
|
+
"name": "token",
|
|
2170
|
+
"type": "address"
|
|
2171
|
+
}
|
|
2172
|
+
],
|
|
2173
|
+
"name": "SafeERC20FailedOperation",
|
|
2174
|
+
"type": "error"
|
|
2175
|
+
}
|
|
2176
|
+
],
|
|
2177
|
+
"args": [],
|
|
2178
|
+
"solcInputHash": "f71d3fc8ea9b29896a8a303357115199",
|
|
2179
|
+
"receipt": {
|
|
2180
|
+
"type": "0x2",
|
|
2181
|
+
"status": "0x1",
|
|
2182
|
+
"cumulativeGasUsed": "0x538f31",
|
|
2183
|
+
"logs": [
|
|
2184
|
+
{
|
|
2185
|
+
"address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
|
|
2186
|
+
"topics": [
|
|
2187
|
+
"0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
|
|
2188
|
+
"0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
|
|
2189
|
+
"0x0000000000000000000000000740356dc773dee1ee291619cea1a07c692a56a8",
|
|
2190
|
+
"0x0c623c7840df6006eb058c0e94237d0101b1a061dee43c31e1c039b6d8b60dd5"
|
|
2191
|
+
],
|
|
2192
|
+
"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
2193
|
+
"blockHash": "0x5448228fb6d746a78c7cd9a8cb260f6c0d8755fd5f41cac2919acba9bfac5ba4",
|
|
2194
|
+
"blockNumber": "0x1f6953b",
|
|
2195
|
+
"blockTimestamp": "0x68c40622",
|
|
2196
|
+
"transactionHash": "0x82226655635ba6e8f9046bee6a8aa08f42ae3a2b5a1bb2d7be23aeb0721729e2",
|
|
2197
|
+
"transactionIndex": "0x4",
|
|
2198
|
+
"logIndex": "0x5",
|
|
2199
|
+
"removed": false
|
|
2200
|
+
},
|
|
2201
|
+
{
|
|
2202
|
+
"address": "0x1880d832aa283d05b8eab68877717e25fbd550bb",
|
|
2203
|
+
"topics": [
|
|
2204
|
+
"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
|
|
2205
|
+
"0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
2206
|
+
"0x0000000000000000000000006b92c73682f0e1fac35a18ab17efa5e77dde9fe1"
|
|
2207
|
+
],
|
|
2208
|
+
"data": "0x",
|
|
2209
|
+
"blockHash": "0x5448228fb6d746a78c7cd9a8cb260f6c0d8755fd5f41cac2919acba9bfac5ba4",
|
|
2210
|
+
"blockNumber": "0x1f6953b",
|
|
2211
|
+
"blockTimestamp": "0x68c40622",
|
|
2212
|
+
"transactionHash": "0x82226655635ba6e8f9046bee6a8aa08f42ae3a2b5a1bb2d7be23aeb0721729e2",
|
|
2213
|
+
"transactionIndex": "0x4",
|
|
2214
|
+
"logIndex": "0x6",
|
|
2215
|
+
"removed": false
|
|
2216
|
+
},
|
|
2217
|
+
{
|
|
2218
|
+
"address": "0x6b92c73682f0e1fac35a18ab17efa5e77dde9fe1",
|
|
2219
|
+
"topics": [
|
|
2220
|
+
"0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
|
|
2221
|
+
"0x0000000000000000000000000740356dc773dee1ee291619cea1a07c692a56a8"
|
|
2222
|
+
],
|
|
2223
|
+
"data": "0x",
|
|
2224
|
+
"blockHash": "0x5448228fb6d746a78c7cd9a8cb260f6c0d8755fd5f41cac2919acba9bfac5ba4",
|
|
2225
|
+
"blockNumber": "0x1f6953b",
|
|
2226
|
+
"blockTimestamp": "0x68c40622",
|
|
2227
|
+
"transactionHash": "0x82226655635ba6e8f9046bee6a8aa08f42ae3a2b5a1bb2d7be23aeb0721729e2",
|
|
2228
|
+
"transactionIndex": "0x4",
|
|
2229
|
+
"logIndex": "0x7",
|
|
2230
|
+
"removed": false
|
|
2231
|
+
},
|
|
2232
|
+
{
|
|
2233
|
+
"address": "0x0740356dc773dee1ee291619cea1a07c692a56a8",
|
|
2234
|
+
"topics": [
|
|
2235
|
+
"0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
|
|
2236
|
+
"0x948b5063b043c4f0632a523280a323cc157913fa9652234d2e94ee89a8f8059f"
|
|
2237
|
+
],
|
|
2238
|
+
"data": "0x0000000000000000000000000000000000000000000000000000000000000003",
|
|
2239
|
+
"blockHash": "0x5448228fb6d746a78c7cd9a8cb260f6c0d8755fd5f41cac2919acba9bfac5ba4",
|
|
2240
|
+
"blockNumber": "0x1f6953b",
|
|
2241
|
+
"blockTimestamp": "0x68c40622",
|
|
2242
|
+
"transactionHash": "0x82226655635ba6e8f9046bee6a8aa08f42ae3a2b5a1bb2d7be23aeb0721729e2",
|
|
2243
|
+
"transactionIndex": "0x4",
|
|
2244
|
+
"logIndex": "0x8",
|
|
2245
|
+
"removed": false
|
|
2246
|
+
}
|
|
2247
|
+
],
|
|
2248
|
+
"logsBloom": "0x00000000000010000001000000180000000000000000000000801000000000000000000000000000000000000040000020000000000020000000000000000000000400000000200000000800004000000001000000000000000000000002000000000000020000000000000000000800000000000000000000000000000000400800020008000000000104000000000102000000000000000000000000000000004000040000000000000000000000002210200000000000020880000004000000000002000000000000000000000000400000000001000000000000000020000000004000000000000000000000000200000000000080000000000000000000",
|
|
2249
|
+
"transactionHash": "0x82226655635ba6e8f9046bee6a8aa08f42ae3a2b5a1bb2d7be23aeb0721729e2",
|
|
2250
|
+
"transactionIndex": "0x4",
|
|
2251
|
+
"blockHash": "0x5448228fb6d746a78c7cd9a8cb260f6c0d8755fd5f41cac2919acba9bfac5ba4",
|
|
2252
|
+
"blockNumber": "0x1f6953b",
|
|
2253
|
+
"gasUsed": "0x4c7396",
|
|
2254
|
+
"effectiveGasPrice": "0x24a02c",
|
|
2255
|
+
"from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
|
|
2256
|
+
"to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
|
|
2257
|
+
"contractAddress": null
|
|
2258
|
+
},
|
|
2259
|
+
"bytecode": "0x61018060405234801562000011575f80fd5b5060405162005901380380620059018339810160408190526200003491620003b1565b828160405180604001604052806009815260200168524556204c6f616e7360b81b81525060405180604001604052806008815260200167122922ab2627a0a760c11b815250815f9081620000899190620004bf565b506001620000988282620004bf565b5050506001600160a01b039081166080528116620000cf57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000da8162000348565b506001600160a01b03851660e08190526040805163ee0fc12160e01b8152905163ee0fc121916004808201926020929091908290030181865afa15801562000124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014a91906200058b565b6001600160a01b031660c0816001600160a01b031681525050846001600160a01b03166388bc2ef36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c691906200058b565b6001600160a01b0316610100816001600160a01b031681525050846001600160a01b031663ee0fc1216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024391906200058b565b6001600160a01b0316631eabcd346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a591906200058b565b6001600160a01b0316610120816001600160a01b031681525050846001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032291906200058b565b6001600160a01b0390811661014052610160949094525090911660a05250620005b09050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0381168114620003ae575f80fd5b50565b5f805f805f60a08688031215620003c6575f80fd5b8551620003d38162000399565b602087015160408801519196509450620003ed8162000399565b6060870151909350620004008162000399565b6080870151909250620004138162000399565b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200044a57607f821691505b6020821081036200046957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ba57805f5260205f20601f840160051c81016020851015620004965750805b601f840160051c820191505b81811015620004b7575f8155600101620004a2565b50505b505050565b81516001600160401b03811115620004db57620004db62000421565b620004f381620004ec845462000435565b846200046f565b602080601f83116001811462000529575f8415620005115750858301515b5f19600386901b1c1916600185901b17855562000583565b5f85815260208120601f198616915b82811015620005595788860151825594840194600190910190840162000538565b50858210156200057757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602082840312156200059c575f80fd5b8151620005a98162000399565b9392505050565b60805160a05160c05160e051610100516101205161014051610160516152776200068a5f395f81816104360152818161294a015281816134720152818161353a01526136cf01525f81816103ee015261103b01525f818161037d0152613b8f01525f818161062301528181611651015281816119da015261344501525f8181610893015281816110b001526110ea01525f818161082201528181612b8201528181612c780152818161378f01526138d701525f818161056c01528181611c4d01526121e601525f81816105cf0152610f8801526152775ff3fe608060405260043610610252575f3560e01c806370a0823111610137578063b88d4fde116100af578063e4ba13c711610076578063e4ba13c7146107c6578063e985e9c5146107f2578063ee0fc12114610811578063f2fde38b14610844578063f8231e3914610863578063fe91edd61461088257005b8063b88d4fde146106ff578063c4d8ea3c1461071e578063c87b56dd14610749578063ddad527114610768578063e131fc0c146107a757005b80638da5cb5b116100fe5780638da5cb5b1461064557806395d89b4114610662578063a21cd6f814610676578063a22cb465146106a2578063a33853d1146106c1578063a4a0481a146106e057005b806370a082311461058e578063715018a6146105ad5780637da0a877146105c157806383b4cf2f146105f357806388bc2ef31461061257005b80632cc2cb63116101ca578063501158691161019157806350115869146104a2578063572b6c05146104de5780636352211e146104fd578063667079891461051c5780636a57728f146105475780636afdd8501461055b57005b80632cc2cb631461041057806331011c5414610425578063325eefd9146104585780633e73ec331461046c57806342842e0e1461048357005b806309c586211161021957806309c58621146103285780630ba8827d146103495780631eabcd341461036c57806323b872dd1461039f5780632407497e146103be578063293c4999146103dd57005b806301ffc9a71461025b5780630582928e1461028f57806306fdde03146102bc578063081812fc146102dd578063095ea7b31461030957005b3661025957005b005b348015610266575f80fd5b5061027a610275366004613f85565b6108b5565b60405190151581526020015b60405180910390f35b34801561029a575f80fd5b506102ae6102a9366004613fa0565b610906565b604051908152602001610286565b3480156102c7575f80fd5b506102d0610916565b6040516102869190614004565b3480156102e8575f80fd5b506102fc6102f7366004613fa0565b6109a5565b6040516102869190614016565b348015610314575f80fd5b5061025961032336600461403e565b6109cc565b61033b610336366004614068565b6109e2565b604051610286929190614148565b61035c610357366004614173565b610c8e565b60405161028694939291906141d7565b348015610377575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103aa575f80fd5b506102596103b9366004614201565b610e70565b3480156103c9575f80fd5b506102596103d836600461423f565b610f00565b3480156103e8575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561041b575f80fd5b506102ae6101f481565b348015610430575f80fd5b506102ae7f000000000000000000000000000000000000000000000000000000000000000081565b348015610463575f80fd5b506102ae601981565b348015610477575f80fd5b506102ae6312cc030081565b34801561048e575f80fd5b5061025961049d366004614201565b610f67565b3480156104ad575f80fd5b506102ae6104bc36600461425a565b600a60209081525f938452604080852082529284528284209052825290205481565b3480156104e9575f80fd5b5061027a6104f836600461423f565b610f86565b348015610508575f80fd5b506102fc610517366004613fa0565b610fb8565b348015610527575f80fd5b506102ae610536366004613fa0565b600b6020525f908152604090205481565b348015610552575f80fd5b506102ae600a81565b348015610566575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610599575f80fd5b506102ae6105a836600461423f565b610fc2565b3480156105b8575f80fd5b50610259611007565b3480156105cc575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006102fc565b3480156105fe575f80fd5b5061033b61060d366004614299565b61101a565b34801561061d575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610650575f80fd5b506006546001600160a01b03166102fc565b34801561066d575f80fd5b506102d061137b565b348015610681575f80fd5b50610695610690366004613fa0565b61138a565b60405161028691906142f2565b3480156106ad575f80fd5b506102596106bc366004614361565b611411565b3480156106cc575f80fd5b506102596106db366004614398565b611423565b3480156106eb575f80fd5b506102ae6106fa3660046143c1565b611647565b34801561070a575f80fd5b5061025961071936600461453c565b6116ee565b348015610729575f80fd5b506102ae610738366004613fa0565b60086020525f908152604090205481565b348015610754575f80fd5b506102d0610763366004613fa0565b61170d565b348015610773575f80fd5b5061027a61078236600461425a565b600760209081525f938452604080852082529284528284209052825290205460ff1681565b3480156107b2575f80fd5b506009546102fc906001600160a01b031681565b3480156107d1575f80fd5b506107e56107e0366004613fa0565b6117a6565b60405161028691906145a3565b3480156107fd575f80fd5b5061027a61080c3660046145b1565b61184d565b34801561081c575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561084f575f80fd5b5061025961085e36600461423f565b61187a565b34801561086e575f80fd5b506102ae61087d366004614624565b6118b7565b34801561088d575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166380ac58cd60e01b14806108e557506001600160e01b03198216635b5e139f60e01b145b8061090057506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61090064e8d4a5100083614721565b60605f805461092490614740565b80601f016020809104026020016040519081016040528092919081815260200182805461095090614740565b801561099b5780601f106109725761010080835404028352916020019161099b565b820191905f5260205f20905b81548152906001019060200180831161097e57829003601f168201915b5050505050905090565b5f6109af826118c2565b505f828152600460205260409020546001600160a01b0316610900565b6109de82826109d96118f9565b611907565b5050565b5f6109eb613f2f565b6109f36118f9565b6001600160a01b0316610a0588611914565b6001600160a01b031614610a4857610a1b6118f9565b610a2488611914565b6040516318d514bd60e21b8152600401610a3f929190614772565b60405180910390fd5b5f878152600d602052604090208054600160701b90046001600160701b0316861115610aa257805460405163b9c5041760e01b815260048101889052600160701b9091046001600160701b03166024820152604401610a3f565b5f610aac89610906565b82549091505f90610adb9084908490610ad6908c90600160701b90046001600160701b031661478c565b61192e565b83549091506001600160701b0316811115610b1e5782546040516395e361d560e01b8152600481018390526001600160701b039091166024820152604401610a3f565b82545f90610b369083906001600160701b031661478c565b6040805160c08101825286546001600160701b038082168352600160701b90910416602080830191909152600188015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028801546001600160a01b0390811684526003890154169083015260a08101919091529091505f90610bd09083611a6f565b9050610bdc818361479f565b6002860154909250610c00906001600160a01b03168c610bfb8b6147b2565b611b6d565b9a508a821115610c2d5760405163c4d4ea0d60e01b8152600481018c905260248101839052604401610a3f565b610c3c8c868685858f8f611d39565b9097509550818b1115610c7f57610c7f30610c556118f9565b876002015f015f9054906101000a90046001600160a01b0316858f610c7a919061478c565b6120ad565b50505050509550959350505050565b5f80610c98613f2f565b610ca0613f2f565b610ca86118f9565b6001600160a01b0316610cba8c611914565b6001600160a01b031614610cd957610cd06118f9565b610a248c611914565b5f610ce38c610906565b9050610cf08c828d612243565b806040518060c00160405290815f82015f9054906101000a90046001600160701b03166001600160701b03166001600160701b031681526020015f8201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b03168152602001600182015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900461ffff1661ffff1661ffff1681526020016001820160089054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600282016040518060400160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508152505090508094508196505050610e5a818b8b8b8f610e53919061479f565b8b8b61101a565b959d909c50929a50939850909650505050505050565b6001600160a01b038216610e99575f604051633250574960e11b8152600401610a3f9190614016565b5f610eac8383610ea76118f9565b612493565b9050836001600160a01b0316816001600160a01b031614610efa576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a3f565b50505050565b610f08612580565b600980546001600160a01b0319166001600160a01b0383169081179091557fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c16610f4f6118f9565b604051610f5c9190614016565b60405180910390a250565b610f8183838360405180602001604052805f8152506116ee565b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b5f610900826118c2565b5f6001600160a01b038216610fec575f6040516322718ad960e21b8152600401610a3f9190614016565b506001600160a01b03165f9081526003602052604090205490565b61100f612580565b6110185f6125d3565b565b5f611023613f2f565b6040516331a9108f60e11b8152600481018990525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ac919061486b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161461112457807f0000000000000000000000000000000000000000000000000000000000000000604051630128886560e71b8152600401610a3f929190614772565b855f0361114457604051631a39845d60e21b815260040160405180910390fd5b601984108061115457506101f484115b1561118457604051633a54873960e21b815260048101859052601960248201526101f46044820152606401610a3f565b5f89815260086020526040812080546111ad928c92916111a390614886565b9182905550612624565b5f818152600d6020526040902090935088600282016111cc82826148be565b505060018101805461ffff8716600160301b0267ffffffffffffffff1990911664ffffffffff421617179055611209856312cc03006101f461263f565b8160010160086101000a81548163ffffffff021916908363ffffffff1602179055505f611237828c8a61192e565b905088811015611264576040516304aefef560e51b8152600481018a905260248101829052604401610a3f565b5f61126f828861270e565b905061127f838d848c858d61271c565b61129061128a6118f9565b87612a32565b8b867f90ac858b09db4f44113a984e09c297b5c0529be26c65a23a1b8967d4124ca5e4858e868e878f6112c16118f9565b6040516112d4979695949392919061495f565b60405180910390a350506040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff81168385015261ffff600160301b820416606084015263ffffffff600160401b909104166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a0820152915050965096945050505050565b60606001805461092490614740565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611406575f848152602090819020604080518082019091526002850290910180546001600160a01b039081168352600191820154168284015290835290920191016113bc565b505050509050919050565b6109de61141c6118f9565b8383612a93565b5f5b81811015610efa575f6114418561143c848761479f565b612624565b5f818152600d60209081526040808320815160c08101835281546001600160701b038082168352600160701b9091041681850152600182015465ffffffffffff808216838601908152600160301b830461ffff166060850152600160401b90920463ffffffff166080840152845180860190955260028401546001600160a01b0390811686526003909401549093169484019490945260a08101929092529151939450921690036114f3575050610efa565b5f6114fd83611914565b90506001600160a01b038116158061153057506312cc0300826040015165ffffffffffff1661152c919061479f565b4211155b1561153d5750505061163f565b61154683612b28565b60208201516001600160701b03161561158c5781602001516001600160701b0316600b5f8981526020019081526020015f205f828254611586919061478c565b90915550505b81516001600160701b0316156115f95781515f888152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080546001600160701b03909316929091906115f390849061478c565b90915550505b86837f2710408375e429523d39f7c37d7d73c1b816756d511f9cb07cd54215ead59f80846116256118f9565b6040516116339291906149d6565b60405180910390a35050505b600101611425565b5f6116e3858585857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d17541538b6040518263ffffffff1660e01b815260040161169d91815260200190565b5f60405180830381865afa1580156116b7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116de91908101906149fd565b612b60565b90505b949350505050565b6116f9848484610e70565b610efa6117046118f9565b85858585612d2b565b6009546060906001600160a01b03168061173657505060408051602081019091525f8152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa906024015f60405180830381865afa158015611778573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261179f9190810190614aa9565b9392505050565b6117ae613f2f565b505f908152600d6020908152604091829020825160c08101845281546001600160701b038082168352600160701b9091041681840152600182015465ffffffffffff811682860152600160301b810461ffff166060830152600160401b900463ffffffff166080820152835180850190945260028201546001600160a01b0390811685526003909201549091169183019190915260a081019190915290565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b611882612580565b6001600160a01b0381166118ab575f604051631e4fbdf760e01b8152600401610a3f9190614016565b6118b4816125d3565b50565b5f61179f8383611a6f565b5f806118cd83611914565b90506001600160a01b03811661090057604051637e27328960e01b815260048101849052602401610a3f565b5f611902612e41565b905090565b610f818383836001612e91565b5f908152600260205260409020546001600160a01b031690565b5f815f0361193d57505f61179f565b60038401546002850154604051633a01714f60e01b81525f926001600160a01b0390811692633a01714f926119789289921690600401614b11565b606060405180830381865afa158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b79190614b33565b60405163d175415360e01b8152600481018690529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1754153906024015f60405180830381865afa158015611a1e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a4591908101906149fd565b9050611a658585846020015160ff16856040015163ffffffff1685612b60565b9695505050505050565b5f80836040015165ffffffffffff1642611a89919061478c565b9050836080015163ffffffff168111611aa5575f915050610900565b6312cc0300811115611ad75760405163045be49160e01b8152600481018290526312cc03006024820152604401610a3f565b5f611af6855f01516001600160701b0316866060015161ffff1661270e565b90505f611b5482875f01516001600160701b0316611b14919061478c565b611b4f886080015163ffffffff1686611b2d919061478c565b60808a01516103e890611b4a9063ffffffff166312cc030061478c565b61263f565b61270e565b9050611a658186885f01516001600160701b031661263f565b5f61eeed196001600160a01b03851601611b8857503461179f565b3415611ba7576040516314ac44cf60e21b815260040160405180910390fd5b60208201516001600160a01b031615611cfd578282602001516001600160a01b03161015611bf0578160200151836040516335c2b2a360e21b8152600401610a3f929190614ba7565b6040805160e0810182526001600160a01b038087166060808401918252602087810151841660808601528786015165ffffffffffff90811660a08701529188015190911660c08501529083523090830152845192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570611c7a6118f9565b8386608001516040518463ffffffff1660e01b8152600401611c9e93929190614bc0565b5f604051808303815f87803b158015611cb5575f80fd5b505af1925050508015611cc6575060015b611cfb573d808015611cf3576040519150601f19603f3d011682016040523d82523d5f602084013e611cf8565b606091505b50505b505b5f611d0785612f8c565b9050611d1c611d146118f9565b3087876120ad565b80611d2686612f8c565b611d30919061478c565b95945050505050565b5f611d42613f2f565b611d4b89612b28565b8754600160701b90046001600160701b03168403611e5257611d7188885f80898861271c565b88878a7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68b8c8b8b8b8b611da36118f9565b604051611db69796959493929190614c33565b60405180910390a450506040805160c08101825287546001600160701b038082168352600160701b90910416602080830191909152600189015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028901546001600160a01b03908116845260038a0154169083015260a081019190915287906120a1565b5f8781526008602052604081208054611e72918a9184906111a390614886565b5f818152600d602052604090208a5481546001600160701b039182166001600160701b03198216811784558d546001600160e01b031990921617600160701b91829004909216021781556001808c018054918301805465ffffffffffff90931665ffffffffffff19841681178255825467ffffffffffffffff1990941617600160301b9384900461ffff1690930292909217808355905463ffffffff60401b19909116600160401b9182900463ffffffff169091021790556002808c015490820180546001600160a01b039283166001600160a01b0319918216179091556003808e01549084018054919093169116179055909150611faf818a611f768a8c61478c565b8454611f8b91906001600160701b031661478c565b8454611fa8908b90600160701b90046001600160701b031661478c565b8b8a61271c565b611fc0611fba6118f9565b83612a32565b81898c7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68d858d8d8d8d611ff26118f9565b6040516120059796959493929190614c33565b60405180910390a46040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a082015290925090505b97509795505050505050565b306001600160a01b038516036120f35761eeed196001600160a01b038316016120df576120da8382613016565b610efa565b6120da6001600160a01b03831684836130a2565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e906121239088903090600401614772565b602060405180830381865afa15801561213e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121629190614c89565b1061217c576120da6001600160a01b0383168585846130fa565b6001600160a01b038111156121af57806001600160a01b03604051633459303960e01b8152600401610a3f929190614b11565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c78516906084015f604051808303815f87803b158015612227575f80fd5b505af1158015612239573d5f803e3d5ffd5b5050505050505050565b5f8061224e85612b28565b5f858152600d602052604090208054600160701b90046001600160701b031684111561228d5760405163c459ec8360e01b815260040160405180910390fd5b80545f906122ac908690600160701b90046001600160701b031661478c565b90505f6122ba83888461192e565b83549091506001600160701b03168110156122fd578254604051631b5de0b760e31b8152600481018390526001600160701b039091166024820152604401610a3f565b5f878152600860205260408120805461231c928a92916111a390614886565b5f818152600d60205260408120855481546001600160701b031981166001600160701b0392831690811784558854600160701b908190048416026001600160e01b0319909216171780835560018089018054918501805465ffffffffffff19811665ffffffffffff9094169384178255825461ffff600160301b91829004160267ffffffffffffffff1990911690931792909217808355905463ffffffff600160401b91829004160263ffffffff60401b1990911617905560028089015490840180546001600160a01b03199081166001600160a01b03938416179091556003808b0154908601805490921692169190911790559398509096506124329287928b929190911690869061242d6118f9565b61271c565b61244361243d6118f9565b86612a32565b8487897f7d3a0daefe69f98b6718ad00d0a9cf2dd50902a8db1b484d4238a86fea6be7c6878a6124716118f9565b60405161248093929190614ca0565b60405180910390a4505050935093915050565b5f8061249e84611914565b90506001600160a01b038316156124ba576124ba818486613133565b6001600160a01b038116156124f4576124d55f855f80612e91565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615612522576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6125886118f9565b6001600160a01b03166125a36006546001600160a01b031690565b6001600160a01b031614611018576125b96118f9565b60405163118cdaa760e01b8152600401610a3f9190614016565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161263564e8d4a5100085614ccf565b61179f919061479f565b5f80805f19858709858702925082811083820303915050805f036126765783828161266c5761266c6146f9565b049250505061179f565b8381106126a757604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a3f565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61179f83836103e861263f565b85546001600160701b03168411156127d6576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a08201929092526127d19187906127ca908861478c565b8585613189565b61288a565b85546001600160701b031684101561288a576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a082019290925261288a91879061288590889061478c565b613642565b8554600160701b90046001600160701b03168311156128cf5785546128ca9086906128c590600160701b90046001600160701b03168661478c565b613763565b612911565b8554600160701b90046001600160701b031683101561291157855461291190869061290b908690600160701b90046001600160701b031661478c565b8361384e565b8115612a0557600386015460028701545f9161293a916001600160a01b03918216911685613941565b60038801546002890154604080517f000000000000000000000000000000000000000000000000000000000000000060208201529394506001600160a01b039283169363fef432579386938c93911691899189915f91016040516020818303038152906040526040518863ffffffff1660e01b81526004016129c196959493929190614ce6565b60206040518083038185885af11580156129dd573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a029190614c89565b50505b505083546001600160701b03918216600160701b026001600160e01b031990911691909216171790915550565b6001600160a01b038216612a5b575f604051633250574960e11b8152600401610a3f9190614016565b5f612a6783835f612493565b90506001600160a01b03811615610f81575f6040516339e3563760e11b8152600401610a3f9190614016565b6001600160a01b038216612abc5781604051630b61174360e31b8152600401610a3f9190614016565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f612b345f835f612493565b90506001600160a01b0381166109de57604051637e27328960e01b815260048101839052602401610a3f565b6040516320c94b1360e11b8152600481018690525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063419296269060240161038060405180830381865afa158015612bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bec9190614eea565b5090505f612c47888583604051908082528060200260200182016040528015612c3f57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612c145790505b508989613979565b90505f612c55898888613a30565b604051634da781a960e01b8152600481018b90529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634da781a990602401602060405180830381865afa158015612cbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce19190614c89565b5f8b8152600b6020526040902054909150612d1c612cff848661479f565b8b612d0a848661479f565b61010089015160141c61ffff16613c84565b9b9a5050505050505050505050565b6001600160a01b0383163b15612e3a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290612d6d908890889087908790600401614fbe565b6020604051808303815f875af1925050508015612da7575060408051601f3d908101601f19168201909252612da491810190614ff0565b60015b612e05573d808015612dd4576040519150601f19603f3d011682016040523d82523d5f602084013e612dd9565b606091505b5080515f03612dfd5783604051633250574960e11b8152600401610a3f9190614016565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14612e385783604051633250574960e11b8152600401610a3f9190614016565b505b5050505050565b5f366014612e4e33610f86565b8015612e5a5750808210155b15612e89575f36612e6b838561478c565b612e7692829061500b565b612e7f91615032565b60601c9250505090565b339250505090565b8080612ea557506001600160a01b03821615155b15612f5d575f612eb4846118c2565b90506001600160a01b03831615801590612ee05750826001600160a01b0316816001600160a01b031614155b8015612ef35750612ef1818461184d565b155b15612f13578260405163a9fbf51f60e01b8152600401610a3f9190614016565b8115612f5b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821661eeee1461300f576040516370a0823160e01b81526001600160a01b038316906370a0823190612fcb903090600401614016565b602060405180830381865afa158015612fe6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061300a9190614c89565b610900565b4792915050565b804710156130405760405163cf47918160e01b815247600482015260248101829052604401610a3f565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461308a576040519150601f19603f3d011682016040523d82523d5f602084013e61308f565b606091505b509150915081610efa57610efa81613ced565b610f8183846001600160a01b031663a9059cbb85856040516024016130c8929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d16565b6040516001600160a01b038481166024830152838116604483015260648201839052610efa9186918216906323b872dd906084016130c8565b61313e838383613d79565b610f81576001600160a01b03831661316c57604051637e27328960e01b815260048101829052602401610a3f565b818160405163177e802f60e01b8152600401610a3f929190614ba7565b5f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520905151909116845290915290205460ff16613274575f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520815151831686528452828520805460ff19166001908117909155898652600c85528386208451808601909552825151841685529151850151831684860190815282548083018455928752949095209251600290910290920180549282166001600160a01b031993841617815592519290930180549290931691161790555b5f848152600a6020908152604080832060a0890180518401516001600160a01b0390811686529184528285209051519091168452909152812080548592906132bd90849061479f565b909155505060a085015160208101519051604051633a01714f60e01b81525f9283926001600160a01b0390911691633a01714f91613300918a9190600401614b11565b606060405180830381865afa15801561331b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333f9190614b33565b60a0880151602081015190516040838101519051631d23a08760e21b8152600481018b90526001600160a01b039283166024820152604481018a905263ffffffff90911660648201525f60848201523060a482015286821660c482015261010060e482015260196101048201527f4c656e64696e67206f757420746f206120626f72726f77657200000000000000610124820152929350169063748e821c90610144016020604051808303815f875af11580156133fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134229190614c89565b60a088015151604051630862026560e41b81529193505f92506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163862026509161349b917f00000000000000000000000000000000000000000000000000000000000000009190600401614b11565b602060405180830381865afa1580156134b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134da919061486b565b90505f6001600160a01b038216156134fc576134f786600a61270e565b6134fe565b5f5b9050801561361f575f81156135245761351f838a60a001515f015184613941565b613526565b5f5b9050826001600160a01b031663fef43257827f00000000000000000000000000000000000000000000000000000000000000008c60a001515f0151868a5f8f60405160200161357791815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016135a796959493929190614ce6565b60206040518083038185885af1935050505080156135e2575060408051601f3d908101601f191682019092526135df91810190614c89565b60015b61361b573d80801561360f576040519150601f19603f3d011682016040523d82523d5f602084013e613614565b606091505b505061361d565b505b505b60a088015151612239903090869088613638868961478c565b610c7a919061478c565b5f828152600a6020908152604080832060a0870180518401516001600160a01b03908116865291845282852090515190911684529091528120805483929061368b90849061478c565b909155505060a0830151602081015190515f916136a89184613941565b90508360a00151602001516001600160a01b0316639e6eec0582858760a001515f0151865f7f000000000000000000000000000000000000000000000000000000000000000060405160200161370091815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161372f959493929190615067565b5f604051808303818588803b158015613746575f80fd5b505af1158015613758573d5f803e3d5ffd5b505050505050505050565b5f828152600b60205260408120805483929061378090849061479f565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a2d532e66137bc6118f9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044810184905260806064820152601960848201527f416464696e6720636f6c6c61746572616c20746f206c6f616e0000000000000060a482015260c4015f604051808303815f87803b15801561383c575f80fd5b505af1158015612e38573d5f803e3d5ffd5b5f838152600b60205260408120805484929061386b90849061478c565b90915550506040516363fdc96f60e11b815260048101849052602481018390526001600160a01b03828116604483015260a06064830152601d60a48301527f52656d6f76696e6720636f6c6c61746572616c2066726f6d206c6f616e00000060c48301525f60848301527f0000000000000000000000000000000000000000000000000000000000000000169063c7fb92de9060e4016020604051808303815f875af115801561391d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efa9190614c89565b5f61eeed196001600160a01b0384160161395c57508061179f565b6139706001600160a01b0384168584613dda565b505f9392505050565b83515f90815b81811015613a2557868181518110613999576139996150c2565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016139d294939291906150d6565b602060405180830381865afa1580156139ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a119190614c89565b613a1b908461479f565b925060010161397f565b505095945050505050565b5f838152600c6020908152604080832080548251818502810185019093528083528493849084015b82821015613aa2575f848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101613a58565b5050505090505f5b8151811015613c7b575f828281518110613ac657613ac66150c2565b602002602001015190505f81602001516001600160a01b0316633a01714f89845f01516040518363ffffffff1660e01b8152600401613b06929190614b11565b606060405180830381865afa158015613b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b459190614b33565b90505f86826040015163ffffffff1614613c05576040828101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101889052606481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401602060405180830381865afa158015613bdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c009190614c89565b613c10565b613c1088600a615236565b5f8a8152600a60208181526040808420888301516001600160a01b0390811686529083528185208951909116855290915290912054919250613c5f908290613c59908c90615236565b8461263f565b613c69908861479f565b96505060019093019250613aaa915050565b50509392505050565b5f61270f198201613c9657505f6116e6565b828410613ca45750836116e6565b5f613cb086868661263f565b9050825f03613cc05790506116e6565b611a6581613ccf85888861263f565b613cdb8661271061478c565b613ce5919061479f565b61271061263f565b805115613cfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8060205f8451602086015f885af180613d35576040513d5f823e3d81fd5b50505f513d91508115613d4c578060011415613d59565b6001600160a01b0384163b155b15610efa5783604051635274afe760e01b8152600401610a3f9190614016565b5f6001600160a01b038316158015906116e65750826001600160a01b0316846001600160a01b03161480613db25750613db2848461184d565b806116e65750505f908152600460205260409020546001600160a01b03908116911614919050565b604051636eb1769f60e11b81525f906001600160a01b0385169063dd62ed3e90613e0a9030908790600401614772565b602060405180830381865afa158015613e25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e499190614c89565b9050610efa8484613e5a858561479f565b5f836001600160a01b031663095ea7b38484604051602401613e7d929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509050613eb68482613eea565b610efa57613ee084856001600160a01b031663095ea7b3865f6040516024016130c8929190614ba7565b610efa8482613d16565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015611a6557508115613f1b5780600114611a65565b50505050506001600160a01b03163b151590565b6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b6001600160e01b0319811681146118b4575f80fd5b5f60208284031215613f95575f80fd5b813561179f81613f70565b5f60208284031215613fb0575f80fd5b5035919050565b5f5b83811015613fd1578181015183820152602001613fb9565b50505f910152565b5f8151808452613ff0816020860160208601613fb7565b601f01601f19169290920160200192915050565b602081525f61179f6020830184613fd9565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146118b4575f80fd5b5f806040838503121561404f575f80fd5b823561405a8161402a565b946020939093013593505050565b5f805f805f60a0868803121561407c575f80fd5b853594506020860135935060408601359250606086013561409c8161402a565b915060808601356001600160401b038111156140b6575f80fd5b860160a081890312156140c7575f80fd5b809150509295509295909350565b6001600160701b038082511683528060208301511660208401525065ffffffffffff604082015116604083015261ffff606082015116606083015263ffffffff608082015116608083015260a0810151610f8160a084018280516001600160a01b03908116835260209182015116910152565b828152610100810161179f60208301846140d5565b5f6040828403121561416d575f80fd5b50919050565b5f805f805f805f610100888a03121561418a575f80fd5b87359650602088013595506141a28960408a0161415d565b94506080880135935060a0880135925060c08801356141c08161402a565b8092505060e0880135905092959891949750929550565b8481526020810184905261020081016141f360408301856140d5565b611d306101208301846140d5565b5f805f60608486031215614213575f80fd5b833561421e8161402a565b9250602084013561422e8161402a565b929592945050506040919091013590565b5f6020828403121561424f575f80fd5b813561179f8161402a565b5f805f6060848603121561426c575f80fd5b83359250602084013561427e8161402a565b9150604084013561428e8161402a565b809150509250925092565b5f805f805f8060e087890312156142ae575f80fd5b863595506142bf886020890161415d565b9450606087013593506080870135925060a08701356142dd8161402a565b8092505060c087013590509295509295509295565b602080825282518282018190525f919060409081850190868401855b828110156143475761433784835180516001600160a01b03908116835260209182015116910152565b928401929085019060010161430e565b5091979650505050505050565b80151581146118b4575f80fd5b5f8060408385031215614372575f80fd5b823561437d8161402a565b9150602083013561438d81614354565b809150509250929050565b5f805f606084860312156143aa575f80fd5b505081359360208301359350604090920135919050565b5f805f80608085870312156143d4575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715614426576144266143f0565b60405290565b604080519081016001600160401b0381118282101715614426576144266143f0565b60405161026081016001600160401b0381118282101715614426576144266143f0565b60405161012081016001600160401b0381118282101715614426576144266143f0565b604051601f8201601f191681016001600160401b03811182821017156144bc576144bc6143f0565b604052919050565b5f6001600160401b038211156144dc576144dc6143f0565b50601f01601f191660200190565b5f82601f8301126144f9575f80fd5b813561450c614507826144c4565b614494565b818152846020838601011115614520575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561454f575f80fd5b843561455a8161402a565b9350602085013561456a8161402a565b92506040850135915060608501356001600160401b0381111561458b575f80fd5b614597878288016144ea565b91505092959194509250565b60e0810161090082846140d5565b5f80604083850312156145c2575f80fd5b82356145cd8161402a565b9150602083013561438d8161402a565b6001600160701b03811681146118b4575f80fd5b65ffffffffffff811681146118b4575f80fd5b61ffff811681146118b4575f80fd5b63ffffffff811681146118b4575f80fd5b5f80828403610100811215614637575f80fd5b60e0811215614644575f80fd5b61464c614404565b8435614657816145dd565b81526020850135614667816145dd565b6020820152604085013561467a816145f1565b6040820152606085013561468d81614604565b606082015260808501356146a081614613565b60808201526040609f19830112156146b6575f80fd5b6146be61442c565b915060a08501356146ce8161402a565b825260c08501356146de8161402a565b602083015260a08101919091529460e0939093013593505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261473b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061475457607f821691505b60208210810361416d57634e487b7160e01b5f52602260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b818103818111156109005761090061470d565b808201808211156109005761090061470d565b5f60a082360312156147c2575f80fd5b60405160a081016001600160401b0382821081831117156147e5576147e56143f0565b8160405284358352602085013591506147fd8261402a565b81602084015260408501359150614813826145f1565b81604084015260608501359150614829826145f1565b8160608401526080850135915080821115614842575f80fd5b5061484f368286016144ea565b60808301525092915050565b80516148668161402a565b919050565b5f6020828403121561487b575f80fd5b815161179f8161402a565b5f600182016148975761489761470d565b5060010190565b80546001600160a01b0319166001600160a01b0392909216919091179055565b81356148c98161402a565b6148d3818361489e565b5060208201356148e28161402a565b610f81816001840161489e565b80546001600160701b03808216845260709190911c166020830152600181015465ffffffffffff8116604080850191909152603082901c61ffff1660608501521c63ffffffff16608083015260028101546001600160a01b0390811660a08401526003909101541660c090910152565b6101c0810161496e828a6148ef565b87356149798161402a565b6001600160a01b0390811660e08401526020890135906149988261402a565b8082166101008501528861012085015287610140850152866101608501528086166101808501528085166101a0850152505098975050505050505050565b61010081016149e582856140d5565b6001600160a01b039290921660e09190910152919050565b5f6020808385031215614a0e575f80fd5b82516001600160401b0380821115614a24575f80fd5b818501915085601f830112614a37575f80fd5b815181811115614a4957614a496143f0565b8060051b9150614a5a848301614494565b8181529183018401918481019088841115614a73575f80fd5b938501935b83851015614a9d5784519250614a8d8361402a565b8282529385019390850190614a78565b98975050505050505050565b5f60208284031215614ab9575f80fd5b81516001600160401b03811115614ace575f80fd5b8201601f81018413614ade575f80fd5b8051614aec614507826144c4565b818152856020838501011115614b00575f80fd5b611d30826020830160208601613fb7565b9182526001600160a01b0316602082015260400190565b805161486681614613565b5f60608284031215614b43575f80fd5b604051606081018181106001600160401b0382111715614b6557614b656143f0565b6040528251614b738161402a565b8152602083015160ff81168114614b88575f80fd5b60208201526040830151614b9b81614613565b60408201529392505050565b6001600160a01b03929092168252602082015260400190565b5f61010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152611a6581840185613fd9565b6102608101614c42828a6148ef565b614c4f60e08301896148ef565b6101c08201969096526101e08101949094526102008401929092526001600160a01b03908116610220840152166102409091015292915050565b5f60208284031215614c99575f80fd5b5051919050565b6101208101614caf82866148ef565b60e08201939093526001600160a01b039190911661010090910152919050565b80820281158282048414176109005761090061470d565b8681525f60018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600d60e08301526c2332b290333937b6903637b0b760991b6101008301526101208060c0840152614d4881840185613fd9565b9998505050505050505050565b8051614866816145f1565b8051614866816145dd565b805161486681614604565b805161486681614354565b5f6102608284031215614d92575f80fd5b614d9a61444e565b9050614da582614d6b565b8152614db360208301614d6b565b6020820152614dc460408301614b28565b6040820152614dd560608301614d76565b6060820152614de660808301614d76565b6080820152614df760a08301614d76565b60a0820152614e0860c08301614d76565b60c0820152614e1960e08301614d76565b60e0820152610100614e2c818401614d76565b90820152610120614e3e838201614d76565b90820152610140614e50838201614d76565b90820152610160614e62838201614d76565b90820152610180614e74838201614d76565b908201526101a0614e86838201614d76565b908201526101c0614e98838201614d76565b908201526101e0614eaa838201614d76565b90820152610200614ebc838201614d76565b90820152610220614ece83820161485b565b90820152610240614ee0838201614d6b565b9082015292915050565b5f80828403610380811215614efd575f80fd5b61012080821215614f0c575f80fd5b614f14614471565b9150614f1f85614d55565b8252614f2d60208601614d55565b6020830152614f3e60408601614d55565b6040830152614f4f60608601614d55565b6060830152614f6060808601614b28565b6080830152614f7160a08601614d60565b60a0830152614f8260c08601614b28565b60c0830152614f9360e0860161485b565b60e0830152610100808601518184015250819350614fb386828701614d81565b925050509250929050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611a6590830184613fd9565b5f60208284031215615000575f80fd5b815161179f81613f70565b5f8085851115615019575f80fd5b83861115615025575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561505f5780818660140360031b1b83161692505b505092915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600f60c08201526e2830bcb4b7339037b333103637b0b760891b60e08201525f6101008060a0840152614a9d81840185613fd9565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561513f57845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016150fb565b505060408501969096525050506060015292915050565b600181815b8085111561519057815f19048211156151765761517661470d565b8085161561518357918102915b93841c939080029061515b565b509250929050565b5f826151a657506001610900565b816151b257505f610900565b81600181146151c857600281146151d2576151ee565b6001915050610900565b60ff8411156151e3576151e361470d565b50506001821b610900565b5060208310610133831016604e8410600b8410161715615211575081810a610900565b61521b8383615156565b805f190482111561522e5761522e61470d565b029392505050565b5f61179f838361519856fea26469706673582212204fb711e9753cc04b67aad7b6cbe53cebf306b53583c036e2a8b8fbd3d993235164736f6c63430008170033",
|
|
2260
|
+
"deployedBytecode": "0x608060405260043610610252575f3560e01c806370a0823111610137578063b88d4fde116100af578063e4ba13c711610076578063e4ba13c7146107c6578063e985e9c5146107f2578063ee0fc12114610811578063f2fde38b14610844578063f8231e3914610863578063fe91edd61461088257005b8063b88d4fde146106ff578063c4d8ea3c1461071e578063c87b56dd14610749578063ddad527114610768578063e131fc0c146107a757005b80638da5cb5b116100fe5780638da5cb5b1461064557806395d89b4114610662578063a21cd6f814610676578063a22cb465146106a2578063a33853d1146106c1578063a4a0481a146106e057005b806370a082311461058e578063715018a6146105ad5780637da0a877146105c157806383b4cf2f146105f357806388bc2ef31461061257005b80632cc2cb63116101ca578063501158691161019157806350115869146104a2578063572b6c05146104de5780636352211e146104fd578063667079891461051c5780636a57728f146105475780636afdd8501461055b57005b80632cc2cb631461041057806331011c5414610425578063325eefd9146104585780633e73ec331461046c57806342842e0e1461048357005b806309c586211161021957806309c58621146103285780630ba8827d146103495780631eabcd341461036c57806323b872dd1461039f5780632407497e146103be578063293c4999146103dd57005b806301ffc9a71461025b5780630582928e1461028f57806306fdde03146102bc578063081812fc146102dd578063095ea7b31461030957005b3661025957005b005b348015610266575f80fd5b5061027a610275366004613f85565b6108b5565b60405190151581526020015b60405180910390f35b34801561029a575f80fd5b506102ae6102a9366004613fa0565b610906565b604051908152602001610286565b3480156102c7575f80fd5b506102d0610916565b6040516102869190614004565b3480156102e8575f80fd5b506102fc6102f7366004613fa0565b6109a5565b6040516102869190614016565b348015610314575f80fd5b5061025961032336600461403e565b6109cc565b61033b610336366004614068565b6109e2565b604051610286929190614148565b61035c610357366004614173565b610c8e565b60405161028694939291906141d7565b348015610377575f80fd5b506102fc7f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c481565b3480156103aa575f80fd5b506102596103b9366004614201565b610e70565b3480156103c9575f80fd5b506102596103d836600461423f565b610f00565b3480156103e8575f80fd5b506102fc7f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d481565b34801561041b575f80fd5b506102ae6101f481565b348015610430575f80fd5b506102ae7f000000000000000000000000000000000000000000000000000000000000000381565b348015610463575f80fd5b506102ae601981565b348015610477575f80fd5b506102ae6312cc030081565b34801561048e575f80fd5b5061025961049d366004614201565b610f67565b3480156104ad575f80fd5b506102ae6104bc36600461425a565b600a60209081525f938452604080852082529284528284209052825290205481565b3480156104e9575f80fd5b5061027a6104f836600461423f565b610f86565b348015610508575f80fd5b506102fc610517366004613fa0565b610fb8565b348015610527575f80fd5b506102ae610536366004613fa0565b600b6020525f908152604090205481565b348015610552575f80fd5b506102ae600a81565b348015610566575f80fd5b506102fc7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b348015610599575f80fd5b506102ae6105a836600461423f565b610fc2565b3480156105b8575f80fd5b50610259611007565b3480156105cc575f80fd5b507f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666102fc565b3480156105fe575f80fd5b5061033b61060d366004614299565b61101a565b34801561061d575f80fd5b506102fc7f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf81565b348015610650575f80fd5b506006546001600160a01b03166102fc565b34801561066d575f80fd5b506102d061137b565b348015610681575f80fd5b50610695610690366004613fa0565b61138a565b60405161028691906142f2565b3480156106ad575f80fd5b506102596106bc366004614361565b611411565b3480156106cc575f80fd5b506102596106db366004614398565b611423565b3480156106eb575f80fd5b506102ae6106fa3660046143c1565b611647565b34801561070a575f80fd5b5061025961071936600461453c565b6116ee565b348015610729575f80fd5b506102ae610738366004613fa0565b60086020525f908152604090205481565b348015610754575f80fd5b506102d0610763366004613fa0565b61170d565b348015610773575f80fd5b5061027a61078236600461425a565b600760209081525f938452604080852082529284528284209052825290205460ff1681565b3480156107b2575f80fd5b506009546102fc906001600160a01b031681565b3480156107d1575f80fd5b506107e56107e0366004613fa0565b6117a6565b60405161028691906145a3565b3480156107fd575f80fd5b5061027a61080c3660046145b1565b61184d565b34801561081c575f80fd5b506102fc7f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a81565b34801561084f575f80fd5b5061025961085e36600461423f565b61187a565b34801561086e575f80fd5b506102ae61087d366004614624565b6118b7565b34801561088d575f80fd5b506102fc7f0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d81565b5f6001600160e01b031982166380ac58cd60e01b14806108e557506001600160e01b03198216635b5e139f60e01b145b8061090057506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61090064e8d4a5100083614721565b60605f805461092490614740565b80601f016020809104026020016040519081016040528092919081815260200182805461095090614740565b801561099b5780601f106109725761010080835404028352916020019161099b565b820191905f5260205f20905b81548152906001019060200180831161097e57829003601f168201915b5050505050905090565b5f6109af826118c2565b505f828152600460205260409020546001600160a01b0316610900565b6109de82826109d96118f9565b611907565b5050565b5f6109eb613f2f565b6109f36118f9565b6001600160a01b0316610a0588611914565b6001600160a01b031614610a4857610a1b6118f9565b610a2488611914565b6040516318d514bd60e21b8152600401610a3f929190614772565b60405180910390fd5b5f878152600d602052604090208054600160701b90046001600160701b0316861115610aa257805460405163b9c5041760e01b815260048101889052600160701b9091046001600160701b03166024820152604401610a3f565b5f610aac89610906565b82549091505f90610adb9084908490610ad6908c90600160701b90046001600160701b031661478c565b61192e565b83549091506001600160701b0316811115610b1e5782546040516395e361d560e01b8152600481018390526001600160701b039091166024820152604401610a3f565b82545f90610b369083906001600160701b031661478c565b6040805160c08101825286546001600160701b038082168352600160701b90910416602080830191909152600188015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028801546001600160a01b0390811684526003890154169083015260a08101919091529091505f90610bd09083611a6f565b9050610bdc818361479f565b6002860154909250610c00906001600160a01b03168c610bfb8b6147b2565b611b6d565b9a508a821115610c2d5760405163c4d4ea0d60e01b8152600481018c905260248101839052604401610a3f565b610c3c8c868685858f8f611d39565b9097509550818b1115610c7f57610c7f30610c556118f9565b876002015f015f9054906101000a90046001600160a01b0316858f610c7a919061478c565b6120ad565b50505050509550959350505050565b5f80610c98613f2f565b610ca0613f2f565b610ca86118f9565b6001600160a01b0316610cba8c611914565b6001600160a01b031614610cd957610cd06118f9565b610a248c611914565b5f610ce38c610906565b9050610cf08c828d612243565b806040518060c00160405290815f82015f9054906101000a90046001600160701b03166001600160701b03166001600160701b031681526020015f8201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b03168152602001600182015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900461ffff1661ffff1661ffff1681526020016001820160089054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600282016040518060400160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508152505090508094508196505050610e5a818b8b8b8f610e53919061479f565b8b8b61101a565b959d909c50929a50939850909650505050505050565b6001600160a01b038216610e99575f604051633250574960e11b8152600401610a3f9190614016565b5f610eac8383610ea76118f9565b612493565b9050836001600160a01b0316816001600160a01b031614610efa576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a3f565b50505050565b610f08612580565b600980546001600160a01b0319166001600160a01b0383169081179091557fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c16610f4f6118f9565b604051610f5c9190614016565b60405180910390a250565b610f8183838360405180602001604052805f8152506116ee565b505050565b7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666001600160a01b0390811691161490565b5f610900826118c2565b5f6001600160a01b038216610fec575f6040516322718ad960e21b8152600401610a3f9190614016565b506001600160a01b03165f9081526003602052604090205490565b61100f612580565b6110185f6125d3565b565b5f611023613f2f565b6040516331a9108f60e11b8152600481018990525f907f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d46001600160a01b031690636352211e90602401602060405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ac919061486b565b90507f0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d6001600160a01b0316816001600160a01b03161461112457807f0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d604051630128886560e71b8152600401610a3f929190614772565b855f0361114457604051631a39845d60e21b815260040160405180910390fd5b601984108061115457506101f484115b1561118457604051633a54873960e21b815260048101859052601960248201526101f46044820152606401610a3f565b5f89815260086020526040812080546111ad928c92916111a390614886565b9182905550612624565b5f818152600d6020526040902090935088600282016111cc82826148be565b505060018101805461ffff8716600160301b0267ffffffffffffffff1990911664ffffffffff421617179055611209856312cc03006101f461263f565b8160010160086101000a81548163ffffffff021916908363ffffffff1602179055505f611237828c8a61192e565b905088811015611264576040516304aefef560e51b8152600481018a905260248101829052604401610a3f565b5f61126f828861270e565b905061127f838d848c858d61271c565b61129061128a6118f9565b87612a32565b8b867f90ac858b09db4f44113a984e09c297b5c0529be26c65a23a1b8967d4124ca5e4858e868e878f6112c16118f9565b6040516112d4979695949392919061495f565b60405180910390a350506040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff81168385015261ffff600160301b820416606084015263ffffffff600160401b909104166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a0820152915050965096945050505050565b60606001805461092490614740565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611406575f848152602090819020604080518082019091526002850290910180546001600160a01b039081168352600191820154168284015290835290920191016113bc565b505050509050919050565b6109de61141c6118f9565b8383612a93565b5f5b81811015610efa575f6114418561143c848761479f565b612624565b5f818152600d60209081526040808320815160c08101835281546001600160701b038082168352600160701b9091041681850152600182015465ffffffffffff808216838601908152600160301b830461ffff166060850152600160401b90920463ffffffff166080840152845180860190955260028401546001600160a01b0390811686526003909401549093169484019490945260a08101929092529151939450921690036114f3575050610efa565b5f6114fd83611914565b90506001600160a01b038116158061153057506312cc0300826040015165ffffffffffff1661152c919061479f565b4211155b1561153d5750505061163f565b61154683612b28565b60208201516001600160701b03161561158c5781602001516001600160701b0316600b5f8981526020019081526020015f205f828254611586919061478c565b90915550505b81516001600160701b0316156115f95781515f888152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080546001600160701b03909316929091906115f390849061478c565b90915550505b86837f2710408375e429523d39f7c37d7d73c1b816756d511f9cb07cd54215ead59f80846116256118f9565b6040516116339291906149d6565b60405180910390a35050505b600101611425565b5f6116e3858585857f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf6001600160a01b031663d17541538b6040518263ffffffff1660e01b815260040161169d91815260200190565b5f60405180830381865afa1580156116b7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116de91908101906149fd565b612b60565b90505b949350505050565b6116f9848484610e70565b610efa6117046118f9565b85858585612d2b565b6009546060906001600160a01b03168061173657505060408051602081019091525f8152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa906024015f60405180830381865afa158015611778573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261179f9190810190614aa9565b9392505050565b6117ae613f2f565b505f908152600d6020908152604091829020825160c08101845281546001600160701b038082168352600160701b9091041681840152600182015465ffffffffffff811682860152600160301b810461ffff166060830152600160401b900463ffffffff166080820152835180850190945260028201546001600160a01b0390811685526003909201549091169183019190915260a081019190915290565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b611882612580565b6001600160a01b0381166118ab575f604051631e4fbdf760e01b8152600401610a3f9190614016565b6118b4816125d3565b50565b5f61179f8383611a6f565b5f806118cd83611914565b90506001600160a01b03811661090057604051637e27328960e01b815260048101849052602401610a3f565b5f611902612e41565b905090565b610f818383836001612e91565b5f908152600260205260409020546001600160a01b031690565b5f815f0361193d57505f61179f565b60038401546002850154604051633a01714f60e01b81525f926001600160a01b0390811692633a01714f926119789289921690600401614b11565b606060405180830381865afa158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b79190614b33565b60405163d175415360e01b8152600481018690529091505f906001600160a01b037f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf169063d1754153906024015f60405180830381865afa158015611a1e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a4591908101906149fd565b9050611a658585846020015160ff16856040015163ffffffff1685612b60565b9695505050505050565b5f80836040015165ffffffffffff1642611a89919061478c565b9050836080015163ffffffff168111611aa5575f915050610900565b6312cc0300811115611ad75760405163045be49160e01b8152600481018290526312cc03006024820152604401610a3f565b5f611af6855f01516001600160701b0316866060015161ffff1661270e565b90505f611b5482875f01516001600160701b0316611b14919061478c565b611b4f886080015163ffffffff1686611b2d919061478c565b60808a01516103e890611b4a9063ffffffff166312cc030061478c565b61263f565b61270e565b9050611a658186885f01516001600160701b031661263f565b5f61eeed196001600160a01b03851601611b8857503461179f565b3415611ba7576040516314ac44cf60e21b815260040160405180910390fd5b60208201516001600160a01b031615611cfd578282602001516001600160a01b03161015611bf0578160200151836040516335c2b2a360e21b8152600401610a3f929190614ba7565b6040805160e0810182526001600160a01b038087166060808401918252602087810151841660808601528786015165ffffffffffff90811660a08701529188015190911660c08501529083523090830152845192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570611c7a6118f9565b8386608001516040518463ffffffff1660e01b8152600401611c9e93929190614bc0565b5f604051808303815f87803b158015611cb5575f80fd5b505af1925050508015611cc6575060015b611cfb573d808015611cf3576040519150601f19603f3d011682016040523d82523d5f602084013e611cf8565b606091505b50505b505b5f611d0785612f8c565b9050611d1c611d146118f9565b3087876120ad565b80611d2686612f8c565b611d30919061478c565b95945050505050565b5f611d42613f2f565b611d4b89612b28565b8754600160701b90046001600160701b03168403611e5257611d7188885f80898861271c565b88878a7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68b8c8b8b8b8b611da36118f9565b604051611db69796959493929190614c33565b60405180910390a450506040805160c08101825287546001600160701b038082168352600160701b90910416602080830191909152600189015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028901546001600160a01b03908116845260038a0154169083015260a081019190915287906120a1565b5f8781526008602052604081208054611e72918a9184906111a390614886565b5f818152600d602052604090208a5481546001600160701b039182166001600160701b03198216811784558d546001600160e01b031990921617600160701b91829004909216021781556001808c018054918301805465ffffffffffff90931665ffffffffffff19841681178255825467ffffffffffffffff1990941617600160301b9384900461ffff1690930292909217808355905463ffffffff60401b19909116600160401b9182900463ffffffff169091021790556002808c015490820180546001600160a01b039283166001600160a01b0319918216179091556003808e01549084018054919093169116179055909150611faf818a611f768a8c61478c565b8454611f8b91906001600160701b031661478c565b8454611fa8908b90600160701b90046001600160701b031661478c565b8b8a61271c565b611fc0611fba6118f9565b83612a32565b81898c7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68d858d8d8d8d611ff26118f9565b6040516120059796959493929190614c33565b60405180910390a46040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a082015290925090505b97509795505050505050565b306001600160a01b038516036120f35761eeed196001600160a01b038316016120df576120da8382613016565b610efa565b6120da6001600160a01b03831684836130a2565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e906121239088903090600401614772565b602060405180830381865afa15801561213e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121629190614c89565b1061217c576120da6001600160a01b0383168585846130fa565b6001600160a01b038111156121af57806001600160a01b03604051633459303960e01b8152600401610a3f929190614b11565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c78516906084015f604051808303815f87803b158015612227575f80fd5b505af1158015612239573d5f803e3d5ffd5b5050505050505050565b5f8061224e85612b28565b5f858152600d602052604090208054600160701b90046001600160701b031684111561228d5760405163c459ec8360e01b815260040160405180910390fd5b80545f906122ac908690600160701b90046001600160701b031661478c565b90505f6122ba83888461192e565b83549091506001600160701b03168110156122fd578254604051631b5de0b760e31b8152600481018390526001600160701b039091166024820152604401610a3f565b5f878152600860205260408120805461231c928a92916111a390614886565b5f818152600d60205260408120855481546001600160701b031981166001600160701b0392831690811784558854600160701b908190048416026001600160e01b0319909216171780835560018089018054918501805465ffffffffffff19811665ffffffffffff9094169384178255825461ffff600160301b91829004160267ffffffffffffffff1990911690931792909217808355905463ffffffff600160401b91829004160263ffffffff60401b1990911617905560028089015490840180546001600160a01b03199081166001600160a01b03938416179091556003808b0154908601805490921692169190911790559398509096506124329287928b929190911690869061242d6118f9565b61271c565b61244361243d6118f9565b86612a32565b8487897f7d3a0daefe69f98b6718ad00d0a9cf2dd50902a8db1b484d4238a86fea6be7c6878a6124716118f9565b60405161248093929190614ca0565b60405180910390a4505050935093915050565b5f8061249e84611914565b90506001600160a01b038316156124ba576124ba818486613133565b6001600160a01b038116156124f4576124d55f855f80612e91565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615612522576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6125886118f9565b6001600160a01b03166125a36006546001600160a01b031690565b6001600160a01b031614611018576125b96118f9565b60405163118cdaa760e01b8152600401610a3f9190614016565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161263564e8d4a5100085614ccf565b61179f919061479f565b5f80805f19858709858702925082811083820303915050805f036126765783828161266c5761266c6146f9565b049250505061179f565b8381106126a757604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a3f565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61179f83836103e861263f565b85546001600160701b03168411156127d6576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a08201929092526127d19187906127ca908861478c565b8585613189565b61288a565b85546001600160701b031684101561288a576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a082019290925261288a91879061288590889061478c565b613642565b8554600160701b90046001600160701b03168311156128cf5785546128ca9086906128c590600160701b90046001600160701b03168661478c565b613763565b612911565b8554600160701b90046001600160701b031683101561291157855461291190869061290b908690600160701b90046001600160701b031661478c565b8361384e565b8115612a0557600386015460028701545f9161293a916001600160a01b03918216911685613941565b60038801546002890154604080517f000000000000000000000000000000000000000000000000000000000000000360208201529394506001600160a01b039283169363fef432579386938c93911691899189915f91016040516020818303038152906040526040518863ffffffff1660e01b81526004016129c196959493929190614ce6565b60206040518083038185885af11580156129dd573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a029190614c89565b50505b505083546001600160701b03918216600160701b026001600160e01b031990911691909216171790915550565b6001600160a01b038216612a5b575f604051633250574960e11b8152600401610a3f9190614016565b5f612a6783835f612493565b90506001600160a01b03811615610f81575f6040516339e3563760e11b8152600401610a3f9190614016565b6001600160a01b038216612abc5781604051630b61174360e31b8152600401610a3f9190614016565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f612b345f835f612493565b90506001600160a01b0381166109de57604051637e27328960e01b815260048101839052602401610a3f565b6040516320c94b1360e11b8152600481018690525f9081906001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a169063419296269060240161038060405180830381865afa158015612bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bec9190614eea565b5090505f612c47888583604051908082528060200260200182016040528015612c3f57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612c145790505b508989613979565b90505f612c55898888613a30565b604051634da781a960e01b8152600481018b90529091505f906001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1690634da781a990602401602060405180830381865afa158015612cbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce19190614c89565b5f8b8152600b6020526040902054909150612d1c612cff848661479f565b8b612d0a848661479f565b61010089015160141c61ffff16613c84565b9b9a5050505050505050505050565b6001600160a01b0383163b15612e3a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290612d6d908890889087908790600401614fbe565b6020604051808303815f875af1925050508015612da7575060408051601f3d908101601f19168201909252612da491810190614ff0565b60015b612e05573d808015612dd4576040519150601f19603f3d011682016040523d82523d5f602084013e612dd9565b606091505b5080515f03612dfd5783604051633250574960e11b8152600401610a3f9190614016565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14612e385783604051633250574960e11b8152600401610a3f9190614016565b505b5050505050565b5f366014612e4e33610f86565b8015612e5a5750808210155b15612e89575f36612e6b838561478c565b612e7692829061500b565b612e7f91615032565b60601c9250505090565b339250505090565b8080612ea557506001600160a01b03821615155b15612f5d575f612eb4846118c2565b90506001600160a01b03831615801590612ee05750826001600160a01b0316816001600160a01b031614155b8015612ef35750612ef1818461184d565b155b15612f13578260405163a9fbf51f60e01b8152600401610a3f9190614016565b8115612f5b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821661eeee1461300f576040516370a0823160e01b81526001600160a01b038316906370a0823190612fcb903090600401614016565b602060405180830381865afa158015612fe6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061300a9190614c89565b610900565b4792915050565b804710156130405760405163cf47918160e01b815247600482015260248101829052604401610a3f565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461308a576040519150601f19603f3d011682016040523d82523d5f602084013e61308f565b606091505b509150915081610efa57610efa81613ced565b610f8183846001600160a01b031663a9059cbb85856040516024016130c8929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d16565b6040516001600160a01b038481166024830152838116604483015260648201839052610efa9186918216906323b872dd906084016130c8565b61313e838383613d79565b610f81576001600160a01b03831661316c57604051637e27328960e01b815260048101829052602401610a3f565b818160405163177e802f60e01b8152600401610a3f929190614ba7565b5f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520905151909116845290915290205460ff16613274575f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520815151831686528452828520805460ff19166001908117909155898652600c85528386208451808601909552825151841685529151850151831684860190815282548083018455928752949095209251600290910290920180549282166001600160a01b031993841617815592519290930180549290931691161790555b5f848152600a6020908152604080832060a0890180518401516001600160a01b0390811686529184528285209051519091168452909152812080548592906132bd90849061479f565b909155505060a085015160208101519051604051633a01714f60e01b81525f9283926001600160a01b0390911691633a01714f91613300918a9190600401614b11565b606060405180830381865afa15801561331b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333f9190614b33565b60a0880151602081015190516040838101519051631d23a08760e21b8152600481018b90526001600160a01b039283166024820152604481018a905263ffffffff90911660648201525f60848201523060a482015286821660c482015261010060e482015260196101048201527f4c656e64696e67206f757420746f206120626f72726f77657200000000000000610124820152929350169063748e821c90610144016020604051808303815f875af11580156133fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134229190614c89565b60a088015151604051630862026560e41b81529193505f92506001600160a01b037f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf169163862026509161349b917f00000000000000000000000000000000000000000000000000000000000000039190600401614b11565b602060405180830381865afa1580156134b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134da919061486b565b90505f6001600160a01b038216156134fc576134f786600a61270e565b6134fe565b5f5b9050801561361f575f81156135245761351f838a60a001515f015184613941565b613526565b5f5b9050826001600160a01b031663fef43257827f00000000000000000000000000000000000000000000000000000000000000038c60a001515f0151868a5f8f60405160200161357791815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016135a796959493929190614ce6565b60206040518083038185885af1935050505080156135e2575060408051601f3d908101601f191682019092526135df91810190614c89565b60015b61361b573d80801561360f576040519150601f19603f3d011682016040523d82523d5f602084013e613614565b606091505b505061361d565b505b505b60a088015151612239903090869088613638868961478c565b610c7a919061478c565b5f828152600a6020908152604080832060a0870180518401516001600160a01b03908116865291845282852090515190911684529091528120805483929061368b90849061478c565b909155505060a0830151602081015190515f916136a89184613941565b90508360a00151602001516001600160a01b0316639e6eec0582858760a001515f0151865f7f000000000000000000000000000000000000000000000000000000000000000360405160200161370091815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161372f959493929190615067565b5f604051808303818588803b158015613746575f80fd5b505af1158015613758573d5f803e3d5ffd5b505050505050505050565b5f828152600b60205260408120805483929061378090849061479f565b90915550506001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1663a2d532e66137bc6118f9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044810184905260806064820152601960848201527f416464696e6720636f6c6c61746572616c20746f206c6f616e0000000000000060a482015260c4015f604051808303815f87803b15801561383c575f80fd5b505af1158015612e38573d5f803e3d5ffd5b5f838152600b60205260408120805484929061386b90849061478c565b90915550506040516363fdc96f60e11b815260048101849052602481018390526001600160a01b03828116604483015260a06064830152601d60a48301527f52656d6f76696e6720636f6c6c61746572616c2066726f6d206c6f616e00000060c48301525f60848301527f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a169063c7fb92de9060e4016020604051808303815f875af115801561391d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efa9190614c89565b5f61eeed196001600160a01b0384160161395c57508061179f565b6139706001600160a01b0384168584613dda565b505f9392505050565b83515f90815b81811015613a2557868181518110613999576139996150c2565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016139d294939291906150d6565b602060405180830381865afa1580156139ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a119190614c89565b613a1b908461479f565b925060010161397f565b505095945050505050565b5f838152600c6020908152604080832080548251818502810185019093528083528493849084015b82821015613aa2575f848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101613a58565b5050505090505f5b8151811015613c7b575f828281518110613ac657613ac66150c2565b602002602001015190505f81602001516001600160a01b0316633a01714f89845f01516040518363ffffffff1660e01b8152600401613b06929190614b11565b606060405180830381865afa158015613b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b459190614b33565b90505f86826040015163ffffffff1614613c05576040828101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101889052606481018990527f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c46001600160a01b031690633be273fa90608401602060405180830381865afa158015613bdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c009190614c89565b613c10565b613c1088600a615236565b5f8a8152600a60208181526040808420888301516001600160a01b0390811686529083528185208951909116855290915290912054919250613c5f908290613c59908c90615236565b8461263f565b613c69908861479f565b96505060019093019250613aaa915050565b50509392505050565b5f61270f198201613c9657505f6116e6565b828410613ca45750836116e6565b5f613cb086868661263f565b9050825f03613cc05790506116e6565b611a6581613ccf85888861263f565b613cdb8661271061478c565b613ce5919061479f565b61271061263f565b805115613cfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8060205f8451602086015f885af180613d35576040513d5f823e3d81fd5b50505f513d91508115613d4c578060011415613d59565b6001600160a01b0384163b155b15610efa5783604051635274afe760e01b8152600401610a3f9190614016565b5f6001600160a01b038316158015906116e65750826001600160a01b0316846001600160a01b03161480613db25750613db2848461184d565b806116e65750505f908152600460205260409020546001600160a01b03908116911614919050565b604051636eb1769f60e11b81525f906001600160a01b0385169063dd62ed3e90613e0a9030908790600401614772565b602060405180830381865afa158015613e25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e499190614c89565b9050610efa8484613e5a858561479f565b5f836001600160a01b031663095ea7b38484604051602401613e7d929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509050613eb68482613eea565b610efa57613ee084856001600160a01b031663095ea7b3865f6040516024016130c8929190614ba7565b610efa8482613d16565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015611a6557508115613f1b5780600114611a65565b50505050506001600160a01b03163b151590565b6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b6001600160e01b0319811681146118b4575f80fd5b5f60208284031215613f95575f80fd5b813561179f81613f70565b5f60208284031215613fb0575f80fd5b5035919050565b5f5b83811015613fd1578181015183820152602001613fb9565b50505f910152565b5f8151808452613ff0816020860160208601613fb7565b601f01601f19169290920160200192915050565b602081525f61179f6020830184613fd9565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146118b4575f80fd5b5f806040838503121561404f575f80fd5b823561405a8161402a565b946020939093013593505050565b5f805f805f60a0868803121561407c575f80fd5b853594506020860135935060408601359250606086013561409c8161402a565b915060808601356001600160401b038111156140b6575f80fd5b860160a081890312156140c7575f80fd5b809150509295509295909350565b6001600160701b038082511683528060208301511660208401525065ffffffffffff604082015116604083015261ffff606082015116606083015263ffffffff608082015116608083015260a0810151610f8160a084018280516001600160a01b03908116835260209182015116910152565b828152610100810161179f60208301846140d5565b5f6040828403121561416d575f80fd5b50919050565b5f805f805f805f610100888a03121561418a575f80fd5b87359650602088013595506141a28960408a0161415d565b94506080880135935060a0880135925060c08801356141c08161402a565b8092505060e0880135905092959891949750929550565b8481526020810184905261020081016141f360408301856140d5565b611d306101208301846140d5565b5f805f60608486031215614213575f80fd5b833561421e8161402a565b9250602084013561422e8161402a565b929592945050506040919091013590565b5f6020828403121561424f575f80fd5b813561179f8161402a565b5f805f6060848603121561426c575f80fd5b83359250602084013561427e8161402a565b9150604084013561428e8161402a565b809150509250925092565b5f805f805f8060e087890312156142ae575f80fd5b863595506142bf886020890161415d565b9450606087013593506080870135925060a08701356142dd8161402a565b8092505060c087013590509295509295509295565b602080825282518282018190525f919060409081850190868401855b828110156143475761433784835180516001600160a01b03908116835260209182015116910152565b928401929085019060010161430e565b5091979650505050505050565b80151581146118b4575f80fd5b5f8060408385031215614372575f80fd5b823561437d8161402a565b9150602083013561438d81614354565b809150509250929050565b5f805f606084860312156143aa575f80fd5b505081359360208301359350604090920135919050565b5f805f80608085870312156143d4575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715614426576144266143f0565b60405290565b604080519081016001600160401b0381118282101715614426576144266143f0565b60405161026081016001600160401b0381118282101715614426576144266143f0565b60405161012081016001600160401b0381118282101715614426576144266143f0565b604051601f8201601f191681016001600160401b03811182821017156144bc576144bc6143f0565b604052919050565b5f6001600160401b038211156144dc576144dc6143f0565b50601f01601f191660200190565b5f82601f8301126144f9575f80fd5b813561450c614507826144c4565b614494565b818152846020838601011115614520575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561454f575f80fd5b843561455a8161402a565b9350602085013561456a8161402a565b92506040850135915060608501356001600160401b0381111561458b575f80fd5b614597878288016144ea565b91505092959194509250565b60e0810161090082846140d5565b5f80604083850312156145c2575f80fd5b82356145cd8161402a565b9150602083013561438d8161402a565b6001600160701b03811681146118b4575f80fd5b65ffffffffffff811681146118b4575f80fd5b61ffff811681146118b4575f80fd5b63ffffffff811681146118b4575f80fd5b5f80828403610100811215614637575f80fd5b60e0811215614644575f80fd5b61464c614404565b8435614657816145dd565b81526020850135614667816145dd565b6020820152604085013561467a816145f1565b6040820152606085013561468d81614604565b606082015260808501356146a081614613565b60808201526040609f19830112156146b6575f80fd5b6146be61442c565b915060a08501356146ce8161402a565b825260c08501356146de8161402a565b602083015260a08101919091529460e0939093013593505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261473b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061475457607f821691505b60208210810361416d57634e487b7160e01b5f52602260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b818103818111156109005761090061470d565b808201808211156109005761090061470d565b5f60a082360312156147c2575f80fd5b60405160a081016001600160401b0382821081831117156147e5576147e56143f0565b8160405284358352602085013591506147fd8261402a565b81602084015260408501359150614813826145f1565b81604084015260608501359150614829826145f1565b8160608401526080850135915080821115614842575f80fd5b5061484f368286016144ea565b60808301525092915050565b80516148668161402a565b919050565b5f6020828403121561487b575f80fd5b815161179f8161402a565b5f600182016148975761489761470d565b5060010190565b80546001600160a01b0319166001600160a01b0392909216919091179055565b81356148c98161402a565b6148d3818361489e565b5060208201356148e28161402a565b610f81816001840161489e565b80546001600160701b03808216845260709190911c166020830152600181015465ffffffffffff8116604080850191909152603082901c61ffff1660608501521c63ffffffff16608083015260028101546001600160a01b0390811660a08401526003909101541660c090910152565b6101c0810161496e828a6148ef565b87356149798161402a565b6001600160a01b0390811660e08401526020890135906149988261402a565b8082166101008501528861012085015287610140850152866101608501528086166101808501528085166101a0850152505098975050505050505050565b61010081016149e582856140d5565b6001600160a01b039290921660e09190910152919050565b5f6020808385031215614a0e575f80fd5b82516001600160401b0380821115614a24575f80fd5b818501915085601f830112614a37575f80fd5b815181811115614a4957614a496143f0565b8060051b9150614a5a848301614494565b8181529183018401918481019088841115614a73575f80fd5b938501935b83851015614a9d5784519250614a8d8361402a565b8282529385019390850190614a78565b98975050505050505050565b5f60208284031215614ab9575f80fd5b81516001600160401b03811115614ace575f80fd5b8201601f81018413614ade575f80fd5b8051614aec614507826144c4565b818152856020838501011115614b00575f80fd5b611d30826020830160208601613fb7565b9182526001600160a01b0316602082015260400190565b805161486681614613565b5f60608284031215614b43575f80fd5b604051606081018181106001600160401b0382111715614b6557614b656143f0565b6040528251614b738161402a565b8152602083015160ff81168114614b88575f80fd5b60208201526040830151614b9b81614613565b60408201529392505050565b6001600160a01b03929092168252602082015260400190565b5f61010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152611a6581840185613fd9565b6102608101614c42828a6148ef565b614c4f60e08301896148ef565b6101c08201969096526101e08101949094526102008401929092526001600160a01b03908116610220840152166102409091015292915050565b5f60208284031215614c99575f80fd5b5051919050565b6101208101614caf82866148ef565b60e08201939093526001600160a01b039190911661010090910152919050565b80820281158282048414176109005761090061470d565b8681525f60018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600d60e08301526c2332b290333937b6903637b0b760991b6101008301526101208060c0840152614d4881840185613fd9565b9998505050505050505050565b8051614866816145f1565b8051614866816145dd565b805161486681614604565b805161486681614354565b5f6102608284031215614d92575f80fd5b614d9a61444e565b9050614da582614d6b565b8152614db360208301614d6b565b6020820152614dc460408301614b28565b6040820152614dd560608301614d76565b6060820152614de660808301614d76565b6080820152614df760a08301614d76565b60a0820152614e0860c08301614d76565b60c0820152614e1960e08301614d76565b60e0820152610100614e2c818401614d76565b90820152610120614e3e838201614d76565b90820152610140614e50838201614d76565b90820152610160614e62838201614d76565b90820152610180614e74838201614d76565b908201526101a0614e86838201614d76565b908201526101c0614e98838201614d76565b908201526101e0614eaa838201614d76565b90820152610200614ebc838201614d76565b90820152610220614ece83820161485b565b90820152610240614ee0838201614d6b565b9082015292915050565b5f80828403610380811215614efd575f80fd5b61012080821215614f0c575f80fd5b614f14614471565b9150614f1f85614d55565b8252614f2d60208601614d55565b6020830152614f3e60408601614d55565b6040830152614f4f60608601614d55565b6060830152614f6060808601614b28565b6080830152614f7160a08601614d60565b60a0830152614f8260c08601614b28565b60c0830152614f9360e0860161485b565b60e0830152610100808601518184015250819350614fb386828701614d81565b925050509250929050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611a6590830184613fd9565b5f60208284031215615000575f80fd5b815161179f81613f70565b5f8085851115615019575f80fd5b83861115615025575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561505f5780818660140360031b1b83161692505b505092915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600f60c08201526e2830bcb4b7339037b333103637b0b760891b60e08201525f6101008060a0840152614a9d81840185613fd9565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561513f57845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016150fb565b505060408501969096525050506060015292915050565b600181815b8085111561519057815f19048211156151765761517661470d565b8085161561518357918102915b93841c939080029061515b565b509250929050565b5f826151a657506001610900565b816151b257505f610900565b81600181146151c857600281146151d2576151ee565b6001915050610900565b60ff8411156151e3576151e361470d565b50506001821b610900565b5060208310610133831016604e8410600b8410161715615211575081810a610900565b61521b8383615156565b805f190482111561522e5761522e61470d565b029392505050565b5f61179f838361519856fea26469706673582212204fb711e9753cc04b67aad7b6cbe53cebf306b53583c036e2a8b8fbd3d993235164736f6c63430008170033",
|
|
2261
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IREVDeployer\",\"name\":\"revnets\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"revId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"PRBMath_MulDiv_Overflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateralToReturn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanCollateral\",\"type\":\"uint256\"}],\"name\":\"REVLoans_CollateralExceedsLoan\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"prepaidFeePercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"REVLoans_InvalidPrepaidFeePercent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timeSinceLoanCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanLiquidationDuration\",\"type\":\"uint256\"}],\"name\":\"REVLoans_LoanExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_NewBorrowAmountGreaterThanLoanAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVLoans_NoMsgValueAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVLoans_NotEnoughCollateral\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxRepayBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"repayBorrowAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_OverMaxRepayBorrowAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"REVLoans_OverflowAlert\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allowanceAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_PermitAllowanceNotEnough\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_ReallocatingMoreCollateralThanBorrowedAmountAllows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"revnetOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"revnets\",\"type\":\"address\"}],\"name\":\"REVLoans_RevnetsMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"REVLoans_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_UnderMinBorrowAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVLoans_ZeroCollateralLoanIsInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceFeeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Liquidate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reallocatedLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"reallocatedLoan\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"removedcollateralCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ReallocateCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"paidOffLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"paidOffLoan\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayBorrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceFeeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralCountToReturn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"RepayLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SetTokenUriResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"CONTROLLER\",\"outputs\":[{\"internalType\":\"contract IJBController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOAN_LIQUIDATION_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PREPAID_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PREPAID_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REVNETS\",\"outputs\":[{\"internalType\":\"contract IREVDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REV_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REV_PREPAID_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prepaidFeePercent\",\"type\":\"uint256\"}],\"name\":\"borrowFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"name\":\"borrowableAmountFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"determineSourceFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isLoanSourceOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"liquidateExpiredLoansFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"}],\"name\":\"loanOf\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"loanSourcesOf\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"numberOfLoansFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCountToTransfer\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCountToAdd\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prepaidFeePercent\",\"type\":\"uint256\"}],\"name\":\"reallocateCollateralFromLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reallocatedLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"reallocatedLoan\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"newLoan\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxRepayBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCountToReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct JBSingleAllowance\",\"name\":\"allowance\",\"type\":\"tuple\"}],\"name\":\"repayLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paidOffLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"paidOffloan\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"}],\"name\":\"revnetIdOfLoanWith\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setTokenUriResolver\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalBorrowedFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"totalCollateralOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"borrowFrom(uint256,(address,address),uint256,uint256,address,uint256)\":{\"params\":{\"beneficiary\":\"The address that'll receive the borrowed funds and the tokens resulting from fee payments.\",\"collateralCount\":\"The amount of tokens to use as collateral for the loan.\",\"minBorrowAmount\":\"The minimum amount being borrowed, denominated in the token of the source's accounting context.\",\"prepaidFeePercent\":\"The fee percent that will be charged upfront from the revnet being borrowed from. Prepaying a fee is cheaper than paying later.\",\"revnetId\":\"The ID of the revnet being borrowed from.\",\"source\":\"The source of the loan being borrowed.\"},\"returns\":{\"_1\":\"loan The loan created from borrowing.\",\"loanId\":\"The ID of the loan created from borrowing.\"}},\"borrowableAmountFrom(uint256,uint256,uint256,uint256)\":{\"params\":{\"collateralCount\":\"The amount of collateral used to secure the loan.\",\"currency\":\"The currency that the resulting amount should be in terms of.\",\"decimals\":\"The decimals the resulting fixed point value will include.\",\"revnetId\":\"The ID of the revnet to check for borrowable assets from.\"},\"returns\":{\"_0\":\"borrowableAmount The amount that can be borrowed from the revnet.\"}},\"constructor\":{\"params\":{\"owner\":\"The owner of the contract that can set the URI resolver.\",\"permit2\":\"A permit2 utility.\",\"revId\":\"The ID of the REV revnet that will receive the fees.\",\"revnets\":\"A contract from which revnets using this loans contract are deployed.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"determineSourceFeeAmount((uint112,uint112,uint48,uint16,uint32,(address,address)),uint256)\":{\"params\":{\"amount\":\"The amount being paid off.\",\"loan\":\"The loan having its source fee amount determined.\"},\"returns\":{\"_0\":\"sourceFeeAmount The source fee amount for the loan.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"liquidateExpiredLoansFrom(uint256,uint256,uint256)\":{\"details\":\"Since some loans may be reallocated or paid off, loans within startingLoanId and startingLoanId + count may be skipped, so choose these parameters carefully to avoid extra gas usage.\",\"params\":{\"count\":\"The amount of loans iterate over since the last liquidated loan.\",\"revnetId\":\"The ID of the revnet to liquidate loans from.\",\"startingLoanId\":\"The ID of the loan to start iterating from.\"}},\"loanOf(uint256)\":{\"custom:member\":\"The ID of the loan.\"},\"loanSourcesOf(uint256)\":{\"custom:member\":\"revnetId The ID of the revnet issuing the loan.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"reallocateCollateralFromLoan(uint256,uint256,(address,address),uint256,uint256,address,uint256)\":{\"details\":\"Useful if a loan's collateral has gone up in value since the loan was created.Refinancing a loan will burn the original and create two new loans.\",\"params\":{\"beneficiary\":\"The address that'll receive the borrowed funds and the tokens resulting from fee payments.\",\"collateralCountToAdd\":\"The amount of collateral to add to the loan.\",\"collateralCountToTransfer\":\"The amount of collateral to transfer from the original loan.\",\"loanId\":\"The ID of the loan to reallocate collateral from.\",\"minBorrowAmount\":\"The minimum amount being borrowed, denominated in the token of the source's accounting context.\",\"prepaidFeePercent\":\"The fee percent that will be charged upfront from the revnet being borrowed from.\",\"source\":\"The source of the loan to create.\"},\"returns\":{\"newLoan\":\"The new loan created from reallocating collateral.\",\"newLoanId\":\"The ID of the new loan.\",\"reallocatedLoan\":\"The loan being reallocated.\",\"reallocatedLoanId\":\"The ID of the loan being reallocated.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"repayLoan(uint256,uint256,uint256,address,(uint256,uint160,uint48,uint48,bytes))\":{\"params\":{\"allowance\":\"An allowance to faciliate permit2 interactions.\",\"beneficiary\":\"The address receiving the returned collateral and any tokens resulting from paying fees.\",\"collateralCountToReturn\":\"The amount of collateral being returned from the loan.\",\"loanId\":\"The ID of the loan being adjusted.\",\"maxRepayBorrowAmount\":\"The maximum amount being paid off, denominated in the token of the source's accounting context.\"},\"returns\":{\"paidOffLoanId\":\"The ID of the loan after it's been paid off.\",\"paidOffloan\":\"The loan after it's been paid off.\"}},\"revnetIdOfLoanWith(uint256)\":{\"params\":{\"loanId\":\"The loan ID of the loan to get the revent ID of.\"},\"returns\":{\"_0\":\"The ID of the revnet.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"loanId\":\"The ID of the loan to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `loanId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"CONTROLLER()\":{\"notice\":\"The controller of revnets that use this loans contract.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for revnets.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each revnet.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent revnet ownership and transfers.\"},\"REVNETS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"REV_ID()\":{\"notice\":\"The ID of the REV revnet that will receive the fees.\"},\"borrowFrom(uint256,(address,address),uint256,uint256,address,uint256)\":{\"notice\":\"Open a loan by borrowing from a revnet.\"},\"borrowableAmountFrom(uint256,uint256,uint256,uint256)\":{\"notice\":\"The amount that can be borrowed from a revnet.\"},\"determineSourceFeeAmount((uint112,uint112,uint48,uint16,uint32,(address,address)),uint256)\":{\"notice\":\"Determines the source fee amount for a loan being paid off a certain amount.\"},\"isLoanSourceOf(uint256,address,address)\":{\"notice\":\"An indication if a revnet currently has outstanding loans from the specified terminal in the specified token.\"},\"liquidateExpiredLoansFrom(uint256,uint256,uint256)\":{\"notice\":\"Cleans up any liquiditated loans.\"},\"loanOf(uint256)\":{\"notice\":\"Get a loan.\"},\"loanSourcesOf(uint256)\":{\"notice\":\"The sources of each revnet's loan.\"},\"numberOfLoansFor(uint256)\":{\"notice\":\"The amount of loans that have been created.\"},\"reallocateCollateralFromLoan(uint256,uint256,(address,address),uint256,uint256,address,uint256)\":{\"notice\":\"Refinances a loan by transferring extra collateral from an existing loan to a new loan.\"},\"repayLoan(uint256,uint256,uint256,address,(uint256,uint160,uint48,uint48,bytes))\":{\"notice\":\"Allows the owner of a loan to pay it back or receive returned collateral no longer necessary to support the loan.\"},\"revnetIdOfLoanWith(uint256)\":{\"notice\":\"The revnet ID for the loan with the provided loan ID.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of loans.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a loan is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"},\"totalBorrowedFrom(uint256,address,address)\":{\"notice\":\"The total amount loaned out by a revnet from a specified terminal in a specified token.\"},\"totalCollateralOf(uint256)\":{\"notice\":\"The total amount of collateral supporting a revnet's loans.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/REVLoans.sol\":\"REVLoans\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":150},\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@croptop/=node_modules/@croptop/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@exhausted-pigeon/=node_modules/@exhausted-pigeon/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"base64-sol/=node_modules/base64-sol/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solady/=node_modules/solady/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/packages/contracts/contracts/forge-std/src/\"]},\"sources\":{\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721Hook.sol\":{\"keccak256\":\"0x1e7b684c86c0f44b0b680c7aba9e511c89892bc0638424722920368911a087f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96995e70a8f15d5600b509ad689c8f2ea6f8116cc7cce9c529b7a41c12c854dc\",\"dweb:/ipfs/QmaAARj3BDSQNsPwkFxauDpWBNgb4kYdzo19tUNdBbc6cX\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TiersHook.sol\":{\"keccak256\":\"0x107f91c5a0674717684d75e0c71106dd1d2937c0089366c7bb555be7fffdd6b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce29d75e454845d0636e671c60c7a691e4a77d1c88fe17dbc435945890465b1\",\"dweb:/ipfs/QmewJn8HeiqKggWA8scLUbwv1TMiit8Va8A5A3K7N9Euss\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TiersHookDeployer.sol\":{\"keccak256\":\"0x8dfdc8e1182e6ea80806e62c2e216fea1da3f6166d764134e243a5372ef05f02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b53d7bd32017f23fb633903004fc476bb8ba166d90c4ae08ccb6ce7f2941adc\",\"dweb:/ipfs/QmeUu6tW6FA6b61DMgBTyRFZM8duae7J7rLyz4x9GZFAbn\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TiersHookStore.sol\":{\"keccak256\":\"0x01d419bf6b9dce2ab162f8aac82f0e4a6d948f53819a42ed023e8f23e358c9c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e0b14b2ae2032bd256614522078cf0f831c35d1f64d1ea2050227117d08c060\",\"dweb:/ipfs/QmP1xbw5597GDvNVgT5Te6w8LBqeXHq4x6HeXYmqLqw2RC\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TokenUriResolver.sol\":{\"keccak256\":\"0xfa599167098f4459320ec4141a98a17b2dfffbce422baa27d8b4e4530f61ece1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b758b161f4c7b520b2c34b4d91e585e961b8f4ca278eebb91d791f7f2f45140\",\"dweb:/ipfs/QmcD9DF7NJ9QykQpT4KPzm4bs3fkjzukdAUWwdU6Atfw85\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721InitTiersConfig.sol\":{\"keccak256\":\"0xfe7147d09467fd8f9b755d2a1485f22bb4a8797acd0e97623258498ddac2e441\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee21464af9e6c78f580c6920757017cdfbd276728773338a67660fedfea0fd2\",\"dweb:/ipfs/QmVYviC7uQ7rEvdpzD6U4BN19P5f8uMuC7jWffzQWvuFcu\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721Tier.sol\":{\"keccak256\":\"0x99232aa73d5715977332dc7c93b03552a93259e59ae00e86b4ddc200f06adaf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://721c0cf10a29fa11677718faafb3a2ecfcb4fbe4e1c09e70a7fac681c80fcc94\",\"dweb:/ipfs/QmSUR77E9PqnpB5kBcKNz2CGBjG9XL9FH57RWVYu3Q7GMR\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TierConfig.sol\":{\"keccak256\":\"0x86e54a0de4deab9d105bf276586aebe256188b193e83eb7a6f6f93e4a29ae9c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04bfcc07d452c26dfc50d3a5eb62df4b3b81e063defd752e0aa5ed049a78eef4\",\"dweb:/ipfs/QmWd5nJHUvZPHxJXkrYCboXaqdtiWWkQG26sNM6qkJuAgD\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TiersHookFlags.sol\":{\"keccak256\":\"0x283d8429f31bd58875c056515aa42abd09c95362bd929e85cfc44a0d92585766\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a580b89fe99d9f8e930c58a4d0d63a5ff7c01c79d210af01373d066c9e72ed6\",\"dweb:/ipfs/QmdY1eSGSoTjv4KSdsG4Tm5CzJN6iqk3qTRga5ZWNbejRz\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TiersMintReservesConfig.sol\":{\"keccak256\":\"0x86fe586a05e6d4bc6fab9b68996a7f4b74c5362ca6f24b9d8057ed7e4cd1c5ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0915f17d1f958ab1fe6b214d99ed62f1f858684898c803f1a8a6a557472dd140\",\"dweb:/ipfs/QmUhdnSV8UzkgvbtkYEKHrpyDEmc2aJxW5HQ1gucuxxu5A\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TiersSetDiscountPercentConfig.sol\":{\"keccak256\":\"0x4672eacb6b0cda5e6f5f72ddb91463c52fb90b4df421053e3b40024f19a59954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8e3a0b35d6b2a6ec66527594263400189b6c766bfd6943c83704380a989aec\",\"dweb:/ipfs/QmUE7NhFWsxjFRzTuRyHJ7oRx3JXD9CnG83t29PjGAhwPR\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JBDeploy721TiersHookConfig.sol\":{\"keccak256\":\"0x0ce457736946394772afe54d575b68a74269cbf37a250de2d27dca6d9dd45005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2010a8f6e19354038d3906ddb174f34464c5f341103313a5c4d628aa7732d5a8\",\"dweb:/ipfs/QmU9m18oWtYNV7UHLcW9kdwE3uzoQuGBe6sASvQTk8GZRL\"]},\"node_modules/@bananapus/buyback-hook-v5/src/interfaces/IJBBuybackHook.sol\":{\"keccak256\":\"0xcfa5f691a38949ebaf38c69fa1f1f6e7efe724f85c06f6cc398f21842bcfabbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6b7afe9e9cc48c751b0adec6b888f327c1dbacd9addba9211298db20c0f4b6a\",\"dweb:/ipfs/QmUr1TfCkuzJgmwrycsH1LZEiT8wsxiMJHJNS3cx4yevxW\"]},\"node_modules/@bananapus/buyback-hook-v5/src/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0x50083bcaca6c1a8d12c79116fab4f6d8cd452a510cb3f00c4a8bc3a54678efb7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://726f187112d0953c14bff8099a8c9ce1ead47eb25e90839f77b100feaaf16127\",\"dweb:/ipfs/QmTEnMENpLjcTQLMwz4kEUiQHfiTkaZT3TL37nQ8JiRYh5\"]},\"node_modules/@bananapus/core-v5/src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"]},\"node_modules/@bananapus/core-v5/src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBController.sol\":{\"keccak256\":\"0xc903b660dccd57e610e1d834407b2bead1fc456153e106f2582407e505a39a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://624bb32a7cd93ce056ea2705332821abd9cd7c83f419bbb279ad96e47c2b6013\",\"dweb:/ipfs/QmXKmQAGecR2zYAXMZ54erg5QnYoWNue4Ek3jCJCUyfW7q\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x54e826b28de02e91191fcfcb93f4d26d9bc9a0a4ecad8704bbbfe2fecb862864\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1269c0a6398db3293f24c6fa1153c312ef3ccfa0ccb22628bbc34e2aa8573f5d\",\"dweb:/ipfs/QmfDe6o6z4gh624fhhgJDcvDHRL3bHi5u7F7hSBkkMMt5a\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x5f0dc5968277b572ba5dc74518906dfb33a9684b7a199c7843f4e66af1c11fb9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://323ce3731aebdf5bf8055b8550055e856feed700d293af8beaf8a750625a0975\",\"dweb:/ipfs/QmU2ErV2uzvXnsJt1qBKm73H2qWcEqYtQGHtZEpx93DaWJ\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x45a88aa9f26512f7fc3deff6d00be9a292fc07a76c8311f175249400e83d1837\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e88b996c3a05f87f7391ebcb9cd6d46c6ce8768083945f26a98c4ac4509e64c\",\"dweb:/ipfs/QmbpuYi6mYV8K8qrh8syWvbPc34pFrXG6QeC23m4MsX3r9\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xc2c0a75d97e3a20fd6964b09381736de03f56e58c27a874a0c96a21e02d0e577\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ef8d476174aca6c35f7fb24ff8be619191bfd22038d3729ca4803252d3dae6a\",\"dweb:/ipfs/QmdWtAwf2A4P88of9gUyWY6hodT9fqpxJK4NBVQt9ys2Jd\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0xe3f0cca072afcac9ee3c875b7439a6edb4a9276e9dba01184d11e8270a25f258\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc3e437b8588965b911a750dc632ac1aca4f9348a137877047a62df598a17bc7\",\"dweb:/ipfs/QmdXjVMdCFcw8HFbhxZZbj9KzxNx2ThjVfcDhFBt1khfvL\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x3e4e5b16037dad09dc5224833a46226a555531f982fbdd338f1a519380e615e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79b8e4d372f538e0e455c0d497c21613447d321dea75850321ee347c5563ef7e\",\"dweb:/ipfs/QmcS6eKZYN7VKKxkpz86NRZohgR84M6GTzn1NnCY7ux4ee\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBFees.sol\":{\"keccak256\":\"0x01163ea5e23edaea11550f20b3d5a77c4c6c3ebec6220bb0d494ed93b1c2195a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056930171ebb9cc23fec5a7d9319816e9a7424c2e13516c842e92ae8141c893c\",\"dweb:/ipfs/QmSNbJgQBiRxV9aqdoUFtRJAY7Hua5Ezw41WEiCwomjWuX\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x21df719e4cd81ddf42fb8aa3a3e9b4db5fb67856a98271f0fdf943bb3dd1ae31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7291a580c5ed5c8b12c7b34d37dc711a31c2045a9afbd00f2907d5acbcb21704\",\"dweb:/ipfs/QmSMqwPcmgutfBK6x7Yud7ZQdCQQrRNHvCzqDaBrix9PF5\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"]},\"node_modules/@bananapus/core-v5/src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"]},\"node_modules/@bananapus/core-v5/src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"]},\"node_modules/@bananapus/core-v5/src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"]},\"node_modules/@bananapus/core-v5/src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"]},\"node_modules/@bananapus/core-v5/src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"]},\"node_modules/@bananapus/core-v5/src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"]},\"node_modules/@bananapus/core-v5/src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0x65e26b78a1f00d81a21abd255c9670b600efca60cf36a993b8f48ecb268464a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d108c721c4281b13de34641befd2a1e9fac73a70195ef5ca957abda6fca9acca\",\"dweb:/ipfs/QmWoJo7wzSKY3z4YCpFvR8DoCUTKviiuFEj2tBkcgKUqW1\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplit.sol\":{\"keccak256\":\"0xfcedbb8b6937ee00578a4c3ec70e2555a2c0a5c18f1eba3b96701b07c1dd94a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7014a7b6f30f35941898eea1d9d32a2d75c807f59e2f0fcb430efc8c25edc1da\",\"dweb:/ipfs/QmWitPTxQCDUfoWrRRrYvE9YhuTcwCAXxVvkVLNk9Jsem1\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"]},\"node_modules/@bananapus/core-v5/src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"]},\"node_modules/@bananapus/core-v5/src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"]},\"node_modules/@bananapus/ownable-v5/src/JBOwnable.sol\":{\"keccak256\":\"0xad1f9fcc7cfa404a6c20b0eafbc71a2c90a4a3f9aebeaa4b2cab63355892ed30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd0ef227f070c6c68c998c711e70e61850eabe789a026e34f11e8e0d506739a6\",\"dweb:/ipfs/QmPeZXX7Lq8Q3jHSMvQR5W6UprCy5z5BPY8tz6KXEt4a5S\"]},\"node_modules/@bananapus/ownable-v5/src/JBOwnableOverrides.sol\":{\"keccak256\":\"0x3ccb51dfe5ea52398b63013dba97552f5b1a443bc6df8713458ee5ce75230bd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd2985c7e5783482a64b774d3be8bcf6736c5e754ffd4c0baa3647fb0ff53b69\",\"dweb:/ipfs/QmfEYE8EXGPbvNcWZj4H4DX2HLxscYcFSckpAGwttt4SRS\"]},\"node_modules/@bananapus/ownable-v5/src/interfaces/IJBOwnable.sol\":{\"keccak256\":\"0xa94807eab5362c523d403a10902db431753b9b1e4b73259d4d7e217fc6cdf766\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5cd284927df617997d055dfaa5f17b9c22c5ce678b9c87b627d14aaa87fa8d2\",\"dweb:/ipfs/Qma1M9MV1FFsaPF5oAMDL7KdidFzCjZ6EZ8mdLo9MXkgxa\"]},\"node_modules/@bananapus/ownable-v5/src/structs/JBOwner.sol\":{\"keccak256\":\"0x535d669344addf9ce4a62320960699ae8c47b4a615327a1cb32590b4e046c069\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64e228cc198dafde001eb65092eebf6e99f91420b993deb9c5dc8204cf2469ce\",\"dweb:/ipfs/QmWpKRsMt3SwToaVyNjF6ZJZaL3Kz2QDfee8BBN2FExV3i\"]},\"node_modules/@bananapus/permission-ids-v5/src/JBPermissionIds.sol\":{\"keccak256\":\"0x03d598c570091f294bebe9c7b59bfc2d907d5b70a3193c3bdb9ddec67edae1e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afb1aefda01e53fa79441bab1fa9cb46154e0db9d16bec8f9b7fa80d200916db\",\"dweb:/ipfs/Qmbkt9HgWmz5rgehRttkzFqW9SkwRYvXYqtHmuxHVxz8ZD\"]},\"node_modules/@bananapus/suckers-v5/src/enums/JBAddToBalanceMode.sol\":{\"keccak256\":\"0x0c18399ed85e6ad5ade75726af9f74e876ae4cf1e8e9d320d50006e320288e1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0080f23626ae9121aad63ba6ec37e95a5b6843de4732f9c7f16b4d09ae3d0880\",\"dweb:/ipfs/QmXudDnVpDAy7Yu7DRb7AZVJEsuK6afse7WtLE2uK12xYo\"]},\"node_modules/@bananapus/suckers-v5/src/enums/JBSuckerState.sol\":{\"keccak256\":\"0x0ee6d0d08cd4f538b8c9ff59d480c7c3371c4cb1971e5a67a89088b4b040a608\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8cce8e51b084cc9a844dc1040aba00b63b01f97868d52cc9f38b9d354fd741f\",\"dweb:/ipfs/QmTveKLmdZAGbwEwaCTBwofSBtckZsDcew3E7iNTnpeskY\"]},\"node_modules/@bananapus/suckers-v5/src/interfaces/IJBSucker.sol\":{\"keccak256\":\"0xc5637080a3bd632b53ca57457a09f252647e1aedd007a21ba9d2fcff8859b343\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://285815a5dc3f29bee503ecc9e7614d49f5e8fd44a6037c3a72e787694a59aebd\",\"dweb:/ipfs/QmccChKT2Gs1Tmeg4LgQAY1ejigdvQYHBo8AQCMfHLMg2j\"]},\"node_modules/@bananapus/suckers-v5/src/interfaces/IJBSuckerDeployer.sol\":{\"keccak256\":\"0x6913c0677d52e01cd2d6f785846a255fcc1783e6b90d15a2f296289d4f482026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24781b17a192ec8bc2d8ab47400a06e4eed2320bc5537489a1f7bbdaed078ad2\",\"dweb:/ipfs/QmbTUkAvFxcAHhjy8hvJ4uUo4PyeKK4BVuU4YtR3QT7s68\"]},\"node_modules/@bananapus/suckers-v5/src/interfaces/IJBSuckerRegistry.sol\":{\"keccak256\":\"0x65aaa205ac5ffc4a4d9a38a39cf5b427e6c58d610cf042854a27c41f0d7d8b8e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9f279b1e5868b8c6b80220c87a4ad5f3a95665fabe0467e2b0601bd910a20592\",\"dweb:/ipfs/QmUqFEoGdUUNgH5FGWnXewSPzjZqG73b2z5nsJevG165oX\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBClaim.sol\":{\"keccak256\":\"0xd616fb935e61727ce04832808667bd40dc121d66f5cc2f347018dfd971635dab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfdcfb12878dc03b4623ddfaa42afa7e8270e8a259a8c453ef4f7e916ca52876\",\"dweb:/ipfs/QmZyAUzatUq2HfGBpoKbeqkC7mpetQC27M3797wgNgkE6H\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBInboxTreeRoot.sol\":{\"keccak256\":\"0xc1d8a61fc49d5d095486b194b7041595dc7639db33e3e310b1703d21caa184da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1c2d8480b823b25a55c4a9af0e6fb4bf6f8c0cba16f71bebf53585a5a86db6d\",\"dweb:/ipfs/QmY9Jbbb1PB9T8UHHjBq2Eq72zu5sPoSPYwVApbypLJtwB\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBLeaf.sol\":{\"keccak256\":\"0x4b71bd2b39022b2f7e59f45d967118ce47061db02e1e827ab4cc6f3a3b960107\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6fd76058f73ff40da48553412b95c2c3f00ddbb2a59d0774b207ab98d555a9\",\"dweb:/ipfs/QmPMe4J6MvRt1hKdDtUGXJoiZjWxqh736ds79bh2fJQEeN\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBMessageRoot.sol\":{\"keccak256\":\"0xed41178db7810558f486583d76382b8eb77f586648e7522070475d5e576a869c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2516fee99b547fa4008f8e3f40a7ef86701b286e9e4ceabd8ae24e3e67b8cf42\",\"dweb:/ipfs/QmeiNo3zgHkqSczQEmCK4S7R5BZwPM9RJp9dnjqqQRNyku\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBOutboxTree.sol\":{\"keccak256\":\"0x900ddc463282f90537e6e6f80d9217bc8da68c06c79c0ba66be1a48ba3647d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e88c122091442114e734a9f6130cd3019add220f804518b82abbcb82726e5ee\",\"dweb:/ipfs/QmeG4grFoBaRbqPj5nDbxTt6V9mb8tvRLnMBzNSKkwKeyR\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBRemoteToken.sol\":{\"keccak256\":\"0xa675639bbc082957d4ea05b4c840d472f1777ad22fc78b0b32962fccc3f19995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9cdd472cfb3efeb2e3c7a7032e844abcce7f615d8d67eb4b33280968d8f8fb0\",\"dweb:/ipfs/QmfPUPLrxNVEYUaYzkAV7CaDX6YRfx2aJ8qDhLPFaXEGEA\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBSuckerDeployerConfig.sol\":{\"keccak256\":\"0xf62c06876ee13ee67630dcc82c10264264c062f20972ff65a9c1d87a554d2379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff81847604f9f1cd2a6c3b687759e69f4beddd67f8dc78488d81ca6aa1e7cc5d\",\"dweb:/ipfs/QmRJPRQq1ifZnGnf3V7xXoVarwTywAut4zq6jnhawtivPE\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBSuckersPair.sol\":{\"keccak256\":\"0xfe76a400e1fa57758973705a9cbac4fab125785b97b49b752b5c13d414f6938b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d2449d365b5e45ed09c70cf4cfa4d2c9bccd492be5e1562f0b3fc2a10ccaf63\",\"dweb:/ipfs/QmYVrJVm7wKtGJ1hnPaHjfFgyKtA5LAJUrkMgSVRupj7AW\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBTokenMapping.sol\":{\"keccak256\":\"0x124f304139003b90ce0b15063d9d79a4990c8b2b6b0444fb0ebf2e2c213faabe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7411e1be2809991b66659dcfabf300550d356ae04d77a001ab33ba96eb109b\",\"dweb:/ipfs/QmdzMYmaxL7FTreDTV3qEScDPECZJga1HRE5yLZB2Zq3Tb\"]},\"node_modules/@bananapus/suckers-v5/src/utils/MerkleLib.sol\":{\"keccak256\":\"0xbe3c73ca7be5471a742f409c921cdb641b77600bb5eacd4b47c36ccd92955d47\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b944fd8fa55e70696313ceac05ecb23ef81e0cd58386af75fc03953b69900efd\",\"dweb:/ipfs/QmSBPBakyc8vtcnu5YjGHXGgnpuc9tFW2eejiawp8z9yrk\"]},\"node_modules/@croptop/core-v5/src/CTPublisher.sol\":{\"keccak256\":\"0x98449aa904f6b6fdc1d94bd1f206ed95098022a75b709f7a0ee64400ffe2b1fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d368af60cf40ac00753f230913398c65c3e726a64860785ed4491dabaa94163a\",\"dweb:/ipfs/Qmd3zb7F6XLvKFuwjpJo9Hjr97EeA183S3bV19WrV7AY63\"]},\"node_modules/@croptop/core-v5/src/interfaces/ICTPublisher.sol\":{\"keccak256\":\"0xdd28ee56853d7e1525d63a2f37d94516e4102e1602353a0bbeedce8011b8ef94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2f2f88d2abe341270caf2fa3dec572de33bd178a603b5f4cf647c482918e51d\",\"dweb:/ipfs/QmeZLmsat4gK62Lhh1f225z2uWj6Zf3oyg6d8umA1g9vLf\"]},\"node_modules/@croptop/core-v5/src/structs/CTAllowedPost.sol\":{\"keccak256\":\"0x1cab9579ed19fea4d490b1de827fd123a8cc7ababd73ed5421351a6f7142a371\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00695b12ade810d017427a7cf20856dc326bbedcf4548ed28e81a33f09b28ad8\",\"dweb:/ipfs/QmP3UPM4xyiSUnBhkThyVp1Ww8QfqfN7rk3fPx4Gu5Whsm\"]},\"node_modules/@croptop/core-v5/src/structs/CTPost.sol\":{\"keccak256\":\"0xc4d67fc9a0323a2a923521f2fb3042bde046cb8c78fc69d928804ab8f3987038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb4d0a02ada8e751cbd7061f8d7b48705a9442339510232f51595ada0e73612d\",\"dweb:/ipfs/QmbFd4CeMhcY86Ze4izYYdK2xB7tQuwdHxdP7aB5zxy8ka\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"src/REVLoans.sol\":{\"keccak256\":\"0x677cc41aac3d5bbe277b58a8af7341510c4ed44c249180a82ac532bd59395891\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95982ca25dca20bbbbbd11583d47fdb48c050b8b5f60df434844a082f2512fa9\",\"dweb:/ipfs/Qmedc7RU7mn7jVHFd5RsjGh5456TgaRbr2Ms4VUoo2uShZ\"]},\"src/interfaces/IREVDeployer.sol\":{\"keccak256\":\"0xdb7a5793c75ad0d43853e5169a3e6d715eff584d560c348eda1c3509b71362a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10df1bf23360085273b82c355c36c78c5c4ee2bc800e9fb2ca4c234ca9737d1e\",\"dweb:/ipfs/QmRrBMG4wA4ZYSwk12RmUTfo2BaYS1PTK21aJ6BvLotTrv\"]},\"src/interfaces/IREVLoans.sol\":{\"keccak256\":\"0x1083fc86b48d602fca704e015797256fb3155514ba5fb014944c30f444dbe918\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c0c7146271f7bfb9169b51ded75e1e3c9f50dda07049ddfd088ff5d1f2195d2\",\"dweb:/ipfs/QmXttZt964qQv1JwYsKaBHCkEuRjpANH5Fo5RS2W5pJPX5\"]},\"src/structs/REVAutoIssuance.sol\":{\"keccak256\":\"0x01b82ab263e382878f86028172e4346e97513110b8dfdaa4418d4205fad8ffc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53fe4dbeb61c3fd3c686cd4b10d0a82782d63b63e6197bfa12299c9252d3937d\",\"dweb:/ipfs/Qmc7KbynMchJgaUXwCStvxBMbd9XhxVDWqoqnfDih1rhLh\"]},\"src/structs/REVBuybackHookConfig.sol\":{\"keccak256\":\"0x90dcf4599ca6c3a4334b6adeac76933c0f21ba857d910b90a5317f7203a8eea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a0624e972a9fb54010485b1ce44ebf89ecea18424641e1e85ea1659eec4caa7\",\"dweb:/ipfs/QmbgndvwwScKn3UHdiSy3krbA8YiW8e621BX36qjBA5hLm\"]},\"src/structs/REVBuybackPoolConfig.sol\":{\"keccak256\":\"0xa108c0543206d978e4bbbfe02121a40ad46713ca47b2938204726e70dad74611\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227c6d6492362eaf14a84ca32721cc9d93990f7419488eaf3c11dccb49cb7763\",\"dweb:/ipfs/QmPQ6FHXXsYLv7KJBSRdo8mv66ZHUCyVUysHR9CqrhyXfg\"]},\"src/structs/REVConfig.sol\":{\"keccak256\":\"0xec837325aea852651530f9d4178bc95d02de10a510ac137dfa6e6c3a5ab48685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d860e3d9d3d29676fd378210280202e7a16d8adf5eb762e0f0d893caa3573541\",\"dweb:/ipfs/QmQB1G7H3WAZtEL4P99xkdXEpU47NPGaPQXaNNZQqJmb5e\"]},\"src/structs/REVCroptopAllowedPost.sol\":{\"keccak256\":\"0x60366fe513872f887e67a4033a0dbbdff95f5fad10a7a8fe484f861e0c6c7526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8247c1958639d1c9655c1a6d055e060fed2d82cd91be97b514cf2e698b571fcd\",\"dweb:/ipfs/QmRV73bZHbPcUp682bddPZy7kHVreEyk9GDVXTs2Th83ZM\"]},\"src/structs/REVDeploy721TiersHookConfig.sol\":{\"keccak256\":\"0x5a72741cb8435b18fd155439c0e0d33b21c1bd4fd574e2a5612b615b269741a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2343288a3aa2d05c45d18d22980cab83db3307a05d9f3cf3ff03fd2b9ce5c\",\"dweb:/ipfs/QmRt34HcvKtL8PyrdYuEE3kh1uMA1bshKEJQN475hBgY2u\"]},\"src/structs/REVDescription.sol\":{\"keccak256\":\"0x40bebc53d50dbfb261882f51c7667d7263193e8fc48897b9384c2ca259046c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24f98bc7ef12f53afa326a266c69683e24501405f72566b7ca7e8dad242e1fe1\",\"dweb:/ipfs/QmNkLsCwhx5pTuMmJLwUNJdPrGjEi3H9JnTX2s9GsoUTAa\"]},\"src/structs/REVLoan.sol\":{\"keccak256\":\"0x34793cd8bb235749b86ebecfe1ab9308b3bbbef0f68b9d15d20cdb0de7ea63d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7541b3a646c0ad4cc8c49a73847dc05e68aabc6e18efdc897550ce0df983fc53\",\"dweb:/ipfs/QmfJv9z7Ptu5GgkkYd6NAzZegRpjeamGfDGNWFToyP7fEe\"]},\"src/structs/REVLoanSource.sol\":{\"keccak256\":\"0x76c10dbad9859cb91b1b49f317586e08ddd9613069dbb364c033c7889f6378fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02f52f4f0891be7c28727af774fdda442284ab0bfa62dc5d28157ab340214453\",\"dweb:/ipfs/QmfWjK5mWfvN3WBygbi84jGJLospE1CWfzK2Py6jZxR5Vv\"]},\"src/structs/REVStageConfig.sol\":{\"keccak256\":\"0x8bb90edc04e1e9cc7a1f7cb230175580da8484a1cad6d3575096f1ca525eddf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c96839fad44d0a43f67eaa5fb3f55046ee1261391520749c0e2b7f53445bcbb\",\"dweb:/ipfs/QmTCAs2yH7NwSNPL9vNEFexRhcKTkQC53TydLqLXoV3Gxf\"]},\"src/structs/REVSuckerDeploymentConfig.sol\":{\"keccak256\":\"0x5a7c3dd8f567f97da62d3815428d3a7307070affb1c4ca5feb72da0dd2b9fcdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0fab77cdc731f518b6b3c8df32c25333c86faad289f96dfa54deb465c21f786\",\"dweb:/ipfs/QmS3PuWmo2w7xMBYMJ2S6A9HL2ykJUayUgFwRQMps6t29z\"]}},\"version\":1}",
|
|
2262
|
+
"gitCommit": "f2d3b9e48d34c4c7b1b3b360032750c1dde1aeec",
|
|
2263
|
+
"history": []
|
|
2264
|
+
}
|