@bananapus/suckers-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.
Files changed (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +422 -0
  3. package/SECURITY.md +55 -0
  4. package/SKILLS.md +163 -0
  5. package/deployments/nana-suckers-v5/arbitrum/JBArbitrumSucker.json +1425 -0
  6. package/deployments/nana-suckers-v5/arbitrum/JBArbitrumSuckerDeployer.json +391 -0
  7. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker.json +1479 -0
  8. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer.json +433 -0
  9. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer_1.json +433 -0
  10. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer_2.json +433 -0
  11. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker_1.json +1479 -0
  12. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker_2.json +1479 -0
  13. package/deployments/nana-suckers-v5/arbitrum/JBSuckerRegistry.json +690 -0
  14. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBArbitrumSucker.json +1425 -0
  15. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBArbitrumSuckerDeployer.json +391 -0
  16. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker.json +1479 -0
  17. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer.json +433 -0
  18. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer_1.json +433 -0
  19. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer_2.json +433 -0
  20. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker_1.json +1479 -0
  21. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker_2.json +1479 -0
  22. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBSuckerRegistry.json +690 -0
  23. package/deployments/nana-suckers-v5/base/JBBaseSucker.json +1389 -0
  24. package/deployments/nana-suckers-v5/base/JBBaseSuckerDeployer.json +376 -0
  25. package/deployments/nana-suckers-v5/base/JBCCIPSucker.json +1483 -0
  26. package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer.json +436 -0
  27. package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer_1.json +436 -0
  28. package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer_2.json +436 -0
  29. package/deployments/nana-suckers-v5/base/JBCCIPSucker_1.json +1483 -0
  30. package/deployments/nana-suckers-v5/base/JBCCIPSucker_2.json +1483 -0
  31. package/deployments/nana-suckers-v5/base/JBSuckerRegistry.json +694 -0
  32. package/deployments/nana-suckers-v5/base_sepolia/JBBaseSucker.json +1389 -0
  33. package/deployments/nana-suckers-v5/base_sepolia/JBBaseSuckerDeployer.json +376 -0
  34. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker.json +1483 -0
  35. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer.json +436 -0
  36. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer_1.json +436 -0
  37. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer_2.json +436 -0
  38. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker_1.json +1483 -0
  39. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker_2.json +1483 -0
  40. package/deployments/nana-suckers-v5/base_sepolia/JBSuckerRegistry.json +694 -0
  41. package/deployments/nana-suckers-v5/ethereum/JBArbitrumSucker.json +1429 -0
  42. package/deployments/nana-suckers-v5/ethereum/JBArbitrumSuckerDeployer.json +394 -0
  43. package/deployments/nana-suckers-v5/ethereum/JBBaseSucker.json +1389 -0
  44. package/deployments/nana-suckers-v5/ethereum/JBBaseSuckerDeployer.json +376 -0
  45. package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker.json +1483 -0
  46. package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer.json +436 -0
  47. package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer_1.json +436 -0
  48. package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer_2.json +436 -0
  49. package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker_1.json +1483 -0
  50. package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker_2.json +1483 -0
  51. package/deployments/nana-suckers-v5/ethereum/JBOptimismSucker.json +1389 -0
  52. package/deployments/nana-suckers-v5/ethereum/JBOptimismSuckerDeployer.json +376 -0
  53. package/deployments/nana-suckers-v5/ethereum/JBSuckerRegistry.json +694 -0
  54. package/deployments/nana-suckers-v5/optimism/JBCCIPSucker.json +1479 -0
  55. package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer.json +433 -0
  56. package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer_1.json +433 -0
  57. package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer_2.json +433 -0
  58. package/deployments/nana-suckers-v5/optimism/JBCCIPSucker_1.json +1479 -0
  59. package/deployments/nana-suckers-v5/optimism/JBCCIPSucker_2.json +1479 -0
  60. package/deployments/nana-suckers-v5/optimism/JBOptimismSucker.json +1385 -0
  61. package/deployments/nana-suckers-v5/optimism/JBOptimismSuckerDeployer.json +373 -0
  62. package/deployments/nana-suckers-v5/optimism/JBSuckerRegistry.json +690 -0
  63. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker.json +1483 -0
  64. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer.json +436 -0
  65. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer_1.json +436 -0
  66. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer_2.json +436 -0
  67. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker_1.json +1483 -0
  68. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker_2.json +1483 -0
  69. package/deployments/nana-suckers-v5/optimism_sepolia/JBOptimismSucker.json +1389 -0
  70. package/deployments/nana-suckers-v5/optimism_sepolia/JBOptimismSuckerDeployer.json +376 -0
  71. package/deployments/nana-suckers-v5/optimism_sepolia/JBSuckerRegistry.json +694 -0
  72. package/deployments/nana-suckers-v5/sepolia/JBArbitrumSucker.json +1429 -0
  73. package/deployments/nana-suckers-v5/sepolia/JBArbitrumSuckerDeployer.json +394 -0
  74. package/deployments/nana-suckers-v5/sepolia/JBBaseSucker.json +1389 -0
  75. package/deployments/nana-suckers-v5/sepolia/JBBaseSuckerDeployer.json +376 -0
  76. package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker.json +1483 -0
  77. package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer.json +436 -0
  78. package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer_1.json +436 -0
  79. package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer_2.json +436 -0
  80. package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker_1.json +1483 -0
  81. package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker_2.json +1483 -0
  82. package/deployments/nana-suckers-v5/sepolia/JBOptimismSucker.json +1389 -0
  83. package/deployments/nana-suckers-v5/sepolia/JBOptimismSuckerDeployer.json +376 -0
  84. package/deployments/nana-suckers-v5/sepolia/JBSuckerRegistry.json +694 -0
  85. package/foundry.lock +11 -0
  86. package/foundry.toml +22 -0
  87. package/package.json +33 -0
  88. package/remappings.txt +1 -0
  89. package/script/Deploy.s.sol +506 -0
  90. package/script/helpers/SuckerDeploymentLib.sol +97 -0
  91. package/slither-ci.config.json +10 -0
  92. package/sphinx.lock +476 -0
  93. package/src/JBArbitrumSucker.sol +311 -0
  94. package/src/JBBaseSucker.sol +41 -0
  95. package/src/JBCCIPSucker.sol +303 -0
  96. package/src/JBOptimismSucker.sol +143 -0
  97. package/src/JBSucker.sol +1159 -0
  98. package/src/JBSuckerRegistry.sol +262 -0
  99. package/src/deployers/JBArbitrumSuckerDeployer.sol +86 -0
  100. package/src/deployers/JBBaseSuckerDeployer.sol +26 -0
  101. package/src/deployers/JBCCIPSuckerDeployer.sol +88 -0
  102. package/src/deployers/JBOptimismSuckerDeployer.sol +82 -0
  103. package/src/deployers/JBSuckerDeployer.sol +147 -0
  104. package/src/enums/JBAddToBalanceMode.sol +11 -0
  105. package/src/enums/JBLayer.sol +8 -0
  106. package/src/enums/JBSuckerState.sol +14 -0
  107. package/src/interfaces/IArbGatewayRouter.sol +11 -0
  108. package/src/interfaces/IArbL1GatewayRouter.sol +17 -0
  109. package/src/interfaces/IArbL2GatewayRouter.sol +14 -0
  110. package/src/interfaces/ICCIPRouter.sol +11 -0
  111. package/src/interfaces/IJBArbitrumSucker.sol +13 -0
  112. package/src/interfaces/IJBArbitrumSuckerDeployer.sol +12 -0
  113. package/src/interfaces/IJBCCIPSuckerDeployer.sol +15 -0
  114. package/src/interfaces/IJBOpSuckerDeployer.sol +11 -0
  115. package/src/interfaces/IJBOptimismSucker.sol +10 -0
  116. package/src/interfaces/IJBSucker.sol +144 -0
  117. package/src/interfaces/IJBSuckerDeployer.sol +40 -0
  118. package/src/interfaces/IJBSuckerExtended.sol +22 -0
  119. package/src/interfaces/IJBSuckerRegistry.sol +75 -0
  120. package/src/interfaces/IOPMessenger.sol +18 -0
  121. package/src/interfaces/IOPStandardBridge.sol +29 -0
  122. package/src/interfaces/IWrappedNativeToken.sol +13 -0
  123. package/src/libraries/ARBAddresses.sol +17 -0
  124. package/src/libraries/ARBChains.sol +11 -0
  125. package/src/libraries/CCIPHelper.sol +136 -0
  126. package/src/structs/JBClaim.sol +13 -0
  127. package/src/structs/JBInboxTreeRoot.sol +12 -0
  128. package/src/structs/JBLeaf.sol +14 -0
  129. package/src/structs/JBMessageRoot.sol +16 -0
  130. package/src/structs/JBOutboxTree.sol +18 -0
  131. package/src/structs/JBRemoteToken.sol +17 -0
  132. package/src/structs/JBSuckerDeployerConfig.sol +12 -0
  133. package/src/structs/JBSuckersPair.sol +11 -0
  134. package/src/structs/JBTokenMapping.sol +13 -0
  135. package/src/utils/MerkleLib.sol +1020 -0
  136. package/test/Fork.t.sol +514 -0
  137. package/test/InteropCompat.t.sol +676 -0
  138. package/test/SuckerAttacks.t.sol +509 -0
  139. package/test/SuckerDeepAttacks.t.sol +1563 -0
  140. package/test/mocks/ERC20Mock.sol +36 -0
  141. package/test/mocks/MockMessenger.sol +42 -0
  142. package/test/unit/arb.t.sol +28 -0
  143. package/test/unit/ccip_native_interop.t.sol +719 -0
  144. package/test/unit/ccip_refund.t.sol +234 -0
  145. package/test/unit/deployer.t.sol +475 -0
  146. package/test/unit/emergency.t.sol +305 -0
  147. package/test/unit/merkle.t.sol +212 -0
  148. package/test/unit/multi_chain_evolution.t.sol +622 -0
  149. package/test/unit/registry.t.sol +26 -0
@@ -0,0 +1,690 @@
1
+ {
2
+ "format": "sphinx-sol-ct-artifact-1",
3
+ "merkleRoot": "0xea14d6a9e0023ebdee52ff89f225fbcdab73dd659d2b605adb5e65271611064f",
4
+ "address": "0x07c8c5bf08f0361883728a8a5f8824ba5724ece3",
5
+ "sourceName": "src/JBSuckerRegistry.sol",
6
+ "contractName": "JBSuckerRegistry",
7
+ "chainId": "0xa4b1",
8
+ "abi": [
9
+ {
10
+ "inputs": [
11
+ {
12
+ "internalType": "contract IJBDirectory",
13
+ "name": "directory",
14
+ "type": "address"
15
+ },
16
+ {
17
+ "internalType": "contract IJBPermissions",
18
+ "name": "permissions",
19
+ "type": "address"
20
+ },
21
+ {
22
+ "internalType": "address",
23
+ "name": "initialOwner",
24
+ "type": "address"
25
+ },
26
+ {
27
+ "internalType": "address",
28
+ "name": "trusted_forwarder",
29
+ "type": "address"
30
+ }
31
+ ],
32
+ "stateMutability": "nonpayable",
33
+ "type": "constructor"
34
+ },
35
+ {
36
+ "inputs": [],
37
+ "name": "DIRECTORY",
38
+ "outputs": [
39
+ {
40
+ "internalType": "contract IJBDirectory",
41
+ "name": "",
42
+ "type": "address"
43
+ }
44
+ ],
45
+ "stateMutability": "view",
46
+ "type": "function"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "PERMISSIONS",
51
+ "outputs": [
52
+ {
53
+ "internalType": "contract IJBPermissions",
54
+ "name": "",
55
+ "type": "address"
56
+ }
57
+ ],
58
+ "stateMutability": "view",
59
+ "type": "function"
60
+ },
61
+ {
62
+ "inputs": [],
63
+ "name": "PROJECTS",
64
+ "outputs": [
65
+ {
66
+ "internalType": "contract IJBProjects",
67
+ "name": "",
68
+ "type": "address"
69
+ }
70
+ ],
71
+ "stateMutability": "view",
72
+ "type": "function"
73
+ },
74
+ {
75
+ "inputs": [
76
+ {
77
+ "internalType": "address",
78
+ "name": "deployer",
79
+ "type": "address"
80
+ }
81
+ ],
82
+ "name": "allowSuckerDeployer",
83
+ "outputs": [],
84
+ "stateMutability": "nonpayable",
85
+ "type": "function"
86
+ },
87
+ {
88
+ "inputs": [
89
+ {
90
+ "internalType": "address[]",
91
+ "name": "deployers",
92
+ "type": "address[]"
93
+ }
94
+ ],
95
+ "name": "allowSuckerDeployers",
96
+ "outputs": [],
97
+ "stateMutability": "nonpayable",
98
+ "type": "function"
99
+ },
100
+ {
101
+ "inputs": [
102
+ {
103
+ "internalType": "uint256",
104
+ "name": "projectId",
105
+ "type": "uint256"
106
+ },
107
+ {
108
+ "internalType": "bytes32",
109
+ "name": "salt",
110
+ "type": "bytes32"
111
+ },
112
+ {
113
+ "components": [
114
+ {
115
+ "internalType": "contract IJBSuckerDeployer",
116
+ "name": "deployer",
117
+ "type": "address"
118
+ },
119
+ {
120
+ "components": [
121
+ {
122
+ "internalType": "address",
123
+ "name": "localToken",
124
+ "type": "address"
125
+ },
126
+ {
127
+ "internalType": "uint32",
128
+ "name": "minGas",
129
+ "type": "uint32"
130
+ },
131
+ {
132
+ "internalType": "address",
133
+ "name": "remoteToken",
134
+ "type": "address"
135
+ },
136
+ {
137
+ "internalType": "uint256",
138
+ "name": "minBridgeAmount",
139
+ "type": "uint256"
140
+ }
141
+ ],
142
+ "internalType": "struct JBTokenMapping[]",
143
+ "name": "mappings",
144
+ "type": "tuple[]"
145
+ }
146
+ ],
147
+ "internalType": "struct JBSuckerDeployerConfig[]",
148
+ "name": "configurations",
149
+ "type": "tuple[]"
150
+ }
151
+ ],
152
+ "name": "deploySuckersFor",
153
+ "outputs": [
154
+ {
155
+ "internalType": "address[]",
156
+ "name": "suckers",
157
+ "type": "address[]"
158
+ }
159
+ ],
160
+ "stateMutability": "nonpayable",
161
+ "type": "function"
162
+ },
163
+ {
164
+ "inputs": [
165
+ {
166
+ "internalType": "uint256",
167
+ "name": "projectId",
168
+ "type": "uint256"
169
+ },
170
+ {
171
+ "internalType": "address",
172
+ "name": "addr",
173
+ "type": "address"
174
+ }
175
+ ],
176
+ "name": "isSuckerOf",
177
+ "outputs": [
178
+ {
179
+ "internalType": "bool",
180
+ "name": "",
181
+ "type": "bool"
182
+ }
183
+ ],
184
+ "stateMutability": "view",
185
+ "type": "function"
186
+ },
187
+ {
188
+ "inputs": [
189
+ {
190
+ "internalType": "address",
191
+ "name": "forwarder",
192
+ "type": "address"
193
+ }
194
+ ],
195
+ "name": "isTrustedForwarder",
196
+ "outputs": [
197
+ {
198
+ "internalType": "bool",
199
+ "name": "",
200
+ "type": "bool"
201
+ }
202
+ ],
203
+ "stateMutability": "view",
204
+ "type": "function"
205
+ },
206
+ {
207
+ "inputs": [],
208
+ "name": "owner",
209
+ "outputs": [
210
+ {
211
+ "internalType": "address",
212
+ "name": "",
213
+ "type": "address"
214
+ }
215
+ ],
216
+ "stateMutability": "view",
217
+ "type": "function"
218
+ },
219
+ {
220
+ "inputs": [
221
+ {
222
+ "internalType": "uint256",
223
+ "name": "projectId",
224
+ "type": "uint256"
225
+ },
226
+ {
227
+ "internalType": "address",
228
+ "name": "sucker",
229
+ "type": "address"
230
+ }
231
+ ],
232
+ "name": "removeDeprecatedSucker",
233
+ "outputs": [],
234
+ "stateMutability": "nonpayable",
235
+ "type": "function"
236
+ },
237
+ {
238
+ "inputs": [
239
+ {
240
+ "internalType": "address",
241
+ "name": "deployer",
242
+ "type": "address"
243
+ }
244
+ ],
245
+ "name": "removeSuckerDeployer",
246
+ "outputs": [],
247
+ "stateMutability": "nonpayable",
248
+ "type": "function"
249
+ },
250
+ {
251
+ "inputs": [],
252
+ "name": "renounceOwnership",
253
+ "outputs": [],
254
+ "stateMutability": "nonpayable",
255
+ "type": "function"
256
+ },
257
+ {
258
+ "inputs": [
259
+ {
260
+ "internalType": "address",
261
+ "name": "deployer",
262
+ "type": "address"
263
+ }
264
+ ],
265
+ "name": "suckerDeployerIsAllowed",
266
+ "outputs": [
267
+ {
268
+ "internalType": "bool",
269
+ "name": "",
270
+ "type": "bool"
271
+ }
272
+ ],
273
+ "stateMutability": "view",
274
+ "type": "function"
275
+ },
276
+ {
277
+ "inputs": [
278
+ {
279
+ "internalType": "uint256",
280
+ "name": "projectId",
281
+ "type": "uint256"
282
+ }
283
+ ],
284
+ "name": "suckerPairsOf",
285
+ "outputs": [
286
+ {
287
+ "components": [
288
+ {
289
+ "internalType": "address",
290
+ "name": "local",
291
+ "type": "address"
292
+ },
293
+ {
294
+ "internalType": "address",
295
+ "name": "remote",
296
+ "type": "address"
297
+ },
298
+ {
299
+ "internalType": "uint256",
300
+ "name": "remoteChainId",
301
+ "type": "uint256"
302
+ }
303
+ ],
304
+ "internalType": "struct JBSuckersPair[]",
305
+ "name": "pairs",
306
+ "type": "tuple[]"
307
+ }
308
+ ],
309
+ "stateMutability": "view",
310
+ "type": "function"
311
+ },
312
+ {
313
+ "inputs": [
314
+ {
315
+ "internalType": "uint256",
316
+ "name": "projectId",
317
+ "type": "uint256"
318
+ }
319
+ ],
320
+ "name": "suckersOf",
321
+ "outputs": [
322
+ {
323
+ "internalType": "address[]",
324
+ "name": "",
325
+ "type": "address[]"
326
+ }
327
+ ],
328
+ "stateMutability": "view",
329
+ "type": "function"
330
+ },
331
+ {
332
+ "inputs": [
333
+ {
334
+ "internalType": "address",
335
+ "name": "newOwner",
336
+ "type": "address"
337
+ }
338
+ ],
339
+ "name": "transferOwnership",
340
+ "outputs": [],
341
+ "stateMutability": "nonpayable",
342
+ "type": "function"
343
+ },
344
+ {
345
+ "inputs": [],
346
+ "name": "trustedForwarder",
347
+ "outputs": [
348
+ {
349
+ "internalType": "address",
350
+ "name": "",
351
+ "type": "address"
352
+ }
353
+ ],
354
+ "stateMutability": "view",
355
+ "type": "function"
356
+ },
357
+ {
358
+ "anonymous": false,
359
+ "inputs": [
360
+ {
361
+ "indexed": true,
362
+ "internalType": "address",
363
+ "name": "previousOwner",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "indexed": true,
368
+ "internalType": "address",
369
+ "name": "newOwner",
370
+ "type": "address"
371
+ }
372
+ ],
373
+ "name": "OwnershipTransferred",
374
+ "type": "event"
375
+ },
376
+ {
377
+ "anonymous": false,
378
+ "inputs": [
379
+ {
380
+ "indexed": false,
381
+ "internalType": "uint256",
382
+ "name": "projectId",
383
+ "type": "uint256"
384
+ },
385
+ {
386
+ "indexed": false,
387
+ "internalType": "address",
388
+ "name": "sucker",
389
+ "type": "address"
390
+ },
391
+ {
392
+ "components": [
393
+ {
394
+ "internalType": "contract IJBSuckerDeployer",
395
+ "name": "deployer",
396
+ "type": "address"
397
+ },
398
+ {
399
+ "components": [
400
+ {
401
+ "internalType": "address",
402
+ "name": "localToken",
403
+ "type": "address"
404
+ },
405
+ {
406
+ "internalType": "uint32",
407
+ "name": "minGas",
408
+ "type": "uint32"
409
+ },
410
+ {
411
+ "internalType": "address",
412
+ "name": "remoteToken",
413
+ "type": "address"
414
+ },
415
+ {
416
+ "internalType": "uint256",
417
+ "name": "minBridgeAmount",
418
+ "type": "uint256"
419
+ }
420
+ ],
421
+ "internalType": "struct JBTokenMapping[]",
422
+ "name": "mappings",
423
+ "type": "tuple[]"
424
+ }
425
+ ],
426
+ "indexed": false,
427
+ "internalType": "struct JBSuckerDeployerConfig",
428
+ "name": "configuration",
429
+ "type": "tuple"
430
+ },
431
+ {
432
+ "indexed": false,
433
+ "internalType": "address",
434
+ "name": "caller",
435
+ "type": "address"
436
+ }
437
+ ],
438
+ "name": "SuckerDeployedFor",
439
+ "type": "event"
440
+ },
441
+ {
442
+ "anonymous": false,
443
+ "inputs": [
444
+ {
445
+ "indexed": false,
446
+ "internalType": "address",
447
+ "name": "deployer",
448
+ "type": "address"
449
+ },
450
+ {
451
+ "indexed": false,
452
+ "internalType": "address",
453
+ "name": "caller",
454
+ "type": "address"
455
+ }
456
+ ],
457
+ "name": "SuckerDeployerAllowed",
458
+ "type": "event"
459
+ },
460
+ {
461
+ "anonymous": false,
462
+ "inputs": [
463
+ {
464
+ "indexed": false,
465
+ "internalType": "address",
466
+ "name": "deployer",
467
+ "type": "address"
468
+ },
469
+ {
470
+ "indexed": false,
471
+ "internalType": "address",
472
+ "name": "caller",
473
+ "type": "address"
474
+ }
475
+ ],
476
+ "name": "SuckerDeployerRemoved",
477
+ "type": "event"
478
+ },
479
+ {
480
+ "anonymous": false,
481
+ "inputs": [
482
+ {
483
+ "indexed": false,
484
+ "internalType": "uint256",
485
+ "name": "projectId",
486
+ "type": "uint256"
487
+ },
488
+ {
489
+ "indexed": false,
490
+ "internalType": "address",
491
+ "name": "sucker",
492
+ "type": "address"
493
+ },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "address",
497
+ "name": "caller",
498
+ "type": "address"
499
+ }
500
+ ],
501
+ "name": "SuckerDeprecated",
502
+ "type": "event"
503
+ },
504
+ {
505
+ "inputs": [
506
+ {
507
+ "internalType": "address",
508
+ "name": "account",
509
+ "type": "address"
510
+ },
511
+ {
512
+ "internalType": "address",
513
+ "name": "sender",
514
+ "type": "address"
515
+ },
516
+ {
517
+ "internalType": "uint256",
518
+ "name": "projectId",
519
+ "type": "uint256"
520
+ },
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "permissionId",
524
+ "type": "uint256"
525
+ }
526
+ ],
527
+ "name": "JBPermissioned_Unauthorized",
528
+ "type": "error"
529
+ },
530
+ {
531
+ "inputs": [
532
+ {
533
+ "internalType": "contract IJBSuckerDeployer",
534
+ "name": "deployer",
535
+ "type": "address"
536
+ }
537
+ ],
538
+ "name": "JBSuckerRegistry_InvalidDeployer",
539
+ "type": "error"
540
+ },
541
+ {
542
+ "inputs": [
543
+ {
544
+ "internalType": "uint256",
545
+ "name": "projectId",
546
+ "type": "uint256"
547
+ }
548
+ ],
549
+ "name": "JBSuckerRegistry_RulesetDoesNotAllowAddingSucker",
550
+ "type": "error"
551
+ },
552
+ {
553
+ "inputs": [
554
+ {
555
+ "internalType": "uint256",
556
+ "name": "projectId",
557
+ "type": "uint256"
558
+ },
559
+ {
560
+ "internalType": "address",
561
+ "name": "sucker",
562
+ "type": "address"
563
+ }
564
+ ],
565
+ "name": "JBSuckerRegistry_SuckerDoesNotBelongToProject",
566
+ "type": "error"
567
+ },
568
+ {
569
+ "inputs": [
570
+ {
571
+ "internalType": "address",
572
+ "name": "sucker",
573
+ "type": "address"
574
+ },
575
+ {
576
+ "internalType": "enum JBSuckerState",
577
+ "name": "suckerState",
578
+ "type": "uint8"
579
+ }
580
+ ],
581
+ "name": "JBSuckerRegistry_SuckerIsNotDeprecated",
582
+ "type": "error"
583
+ },
584
+ {
585
+ "inputs": [
586
+ {
587
+ "internalType": "address",
588
+ "name": "owner",
589
+ "type": "address"
590
+ }
591
+ ],
592
+ "name": "OwnableInvalidOwner",
593
+ "type": "error"
594
+ },
595
+ {
596
+ "inputs": [
597
+ {
598
+ "internalType": "address",
599
+ "name": "account",
600
+ "type": "address"
601
+ }
602
+ ],
603
+ "name": "OwnableUnauthorizedAccount",
604
+ "type": "error"
605
+ }
606
+ ],
607
+ "args": [],
608
+ "solcInputHash": "14ce4938174f25cdd1fbe9b98155e159",
609
+ "receipt": {
610
+ "type": "0x2",
611
+ "status": "0x1",
612
+ "cumulativeGasUsed": "0x1a2e8d",
613
+ "logs": [
614
+ {
615
+ "address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
616
+ "topics": [
617
+ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
618
+ "0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
619
+ "0x000000000000000000000000691d6d2e1f0fb22b67e7471310ddcb3a881cc968",
620
+ "0x5255048d5a59ef6f4c37dfdcba12553dc696c2836e0ec2dad1721d55827c44bb"
621
+ ],
622
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
623
+ "blockHash": "0x55f2af49c9b47dba18596f042ba0c488c5f3885dcd39550e98f50b1606b2f5f9",
624
+ "blockNumber": "0x168431e2",
625
+ "transactionHash": "0x6e8c3af386d6a9b6cb8c5b890d8ca5b6410baafb927ba7019bb027c6751d1548",
626
+ "transactionIndex": "0x1",
627
+ "logIndex": "0x0",
628
+ "removed": false
629
+ },
630
+ {
631
+ "address": "0x07c8c5bf08f0361883728a8a5f8824ba5724ece3",
632
+ "topics": [
633
+ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
634
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
635
+ "0x00000000000000000000000080a8f7a4bd75b539ce26937016df607fdc9abeb5"
636
+ ],
637
+ "data": "0x",
638
+ "blockHash": "0x55f2af49c9b47dba18596f042ba0c488c5f3885dcd39550e98f50b1606b2f5f9",
639
+ "blockNumber": "0x168431e2",
640
+ "transactionHash": "0x6e8c3af386d6a9b6cb8c5b890d8ca5b6410baafb927ba7019bb027c6751d1548",
641
+ "transactionIndex": "0x1",
642
+ "logIndex": "0x1",
643
+ "removed": false
644
+ },
645
+ {
646
+ "address": "0x80a8f7a4bd75b539ce26937016df607fdc9abeb5",
647
+ "topics": [
648
+ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
649
+ "0x000000000000000000000000691d6d2e1f0fb22b67e7471310ddcb3a881cc968"
650
+ ],
651
+ "data": "0x",
652
+ "blockHash": "0x55f2af49c9b47dba18596f042ba0c488c5f3885dcd39550e98f50b1606b2f5f9",
653
+ "blockNumber": "0x168431e2",
654
+ "transactionHash": "0x6e8c3af386d6a9b6cb8c5b890d8ca5b6410baafb927ba7019bb027c6751d1548",
655
+ "transactionIndex": "0x1",
656
+ "logIndex": "0x2",
657
+ "removed": false
658
+ },
659
+ {
660
+ "address": "0x691d6d2e1f0fb22b67e7471310ddcb3a881cc968",
661
+ "topics": [
662
+ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
663
+ "0xea14d6a9e0023ebdee52ff89f225fbcdab73dd659d2b605adb5e65271611064f"
664
+ ],
665
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000011",
666
+ "blockHash": "0x55f2af49c9b47dba18596f042ba0c488c5f3885dcd39550e98f50b1606b2f5f9",
667
+ "blockNumber": "0x168431e2",
668
+ "transactionHash": "0x6e8c3af386d6a9b6cb8c5b890d8ca5b6410baafb927ba7019bb027c6751d1548",
669
+ "transactionIndex": "0x1",
670
+ "logIndex": "0x3",
671
+ "removed": false
672
+ }
673
+ ],
674
+ "logsBloom": "0x04000000000010000000000000080000000800000000000000800000000400000000000000000000000000000040020000000000000000010000000000040000000000000000200000000000008000000001000000000000000000000000000000000000020000400000000000000800000000000000000000000000000000400800000000000000000104000000100000000000100000000020000000000000004000040000000000000000000040002200000000000000800000000044000000000002004000000000000000000000000000000000040000000000000020020000000000000000000100200000020200000000000080000000000000000001",
675
+ "transactionHash": "0x6e8c3af386d6a9b6cb8c5b890d8ca5b6410baafb927ba7019bb027c6751d1548",
676
+ "transactionIndex": "0x1",
677
+ "blockHash": "0x55f2af49c9b47dba18596f042ba0c488c5f3885dcd39550e98f50b1606b2f5f9",
678
+ "blockNumber": "0x168431e2",
679
+ "gasUsed": "0x1a2e8d",
680
+ "effectiveGasPrice": "0x989680",
681
+ "from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
682
+ "to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
683
+ "contractAddress": null
684
+ },
685
+ "bytecode": "0x6101006040523480156200001257600080fd5b5060405162001b0938038062001b09833981016040819052620000359162000171565b6001600160a01b038082166080528390839081166200006e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000798162000108565b506001600160a01b0390811660a052841660c08190526040805163293c499960e01b8152905163293c4999916004808201926020929091908290030181865afa158015620000cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f19190620001d9565b6001600160a01b031660e052506200020092505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200016e57600080fd5b50565b600080600080608085870312156200018857600080fd5b8451620001958162000158565b6020860151909450620001a88162000158565b6040860151909350620001bb8162000158565b6060860151909250620001ce8162000158565b939692955090935050565b600060208284031215620001ec57600080fd5b8151620001f98162000158565b9392505050565b60805160a05160c05160e0516118b3620002566000396000818161013a01526103e1015260006102880152600081816102f60152610d890152600081816101cf0152818161024c0152610f3a01526118b36000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063715018a6116100b25780638da5cb5b11610081578063f2fde38b11610066578063f2fde38b146102de578063f434c914146102f1578063f73ac20f1461031857600080fd5b80638da5cb5b146102aa578063a1031a4f146102bb57600080fd5b8063715018a6146102425780637da0a8771461024a57806383db9d011461027057806388bc2ef31461028357600080fd5b80633d12cb87116100ee5780633d12cb87146101ac578063572b6c05146101bf5780635d6f1fc51461020f578063669745a51461022f57600080fd5b8063153bb1bb14610120578063293c4999146101355780632f3f50e014610179578063314fcc3814610199575b600080fd5b61013361012e36600461121a565b61032b565b005b61015c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61018c61018736600461127c565b6103a3565b60405161017091906112cf565b6101336101a736600461131c565b610720565b61018c6101ba36600461134c565b6108bd565b6101ff6101cd36600461121a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b6040519015158152602001610170565b61022261021d36600461134c565b6108dd565b6040516101709190611365565b61013361023d3660046113ca565b610ac6565b610133610b85565b7f000000000000000000000000000000000000000000000000000000000000000061015c565b6101ff61027e36600461131c565b610b99565b61015c7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031661015c565b6101ff6102c936600461121a565b60016020526000908152604090205460ff1681565b6101336102ec36600461121a565b610bcf565b61015c7f000000000000000000000000000000000000000000000000000000000000000081565b61013361032636600461121a565b610c26565b610333610c7e565b6001600160a01b0381166000908152600160205260409020805460ff191690557f1b9942be0c71843c19753c9070512cdce46255a7bf38934a6175b1a684950b948161037d610cf5565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101859052606090610454906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044c919061140c565b86601d610d04565b8167ffffffffffffffff81111561046d5761046d611429565b604051908082528060200260200182016040528015610496578160200160208202803683370190505b5090506104a1610cf5565b604080516001600160a01b039092166020830152810185905260600160405160208183030381529060405280519060200120935060005b828110156107175760008484838181106104f4576104f461143f565b90506020028101906105069190611455565b61050f9061152e565b80516001600160a01b031660009081526001602052604090205490915060ff166105785780516040517f2223f1010000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b80516040517f1213036600000000000000000000000000000000000000000000000000000000815260048101899052602481018890526000916001600160a01b0316906312130366906044016020604051808303816000875af11580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610607919061140c565b90508084848151811061061c5761061c61143f565b6001600160a01b03909216602092830291909101820152600089815260029091526040902061064d90826001610e54565b5060208201516040517f2241dc520000000000000000000000000000000000000000000000000000000081526001600160a01b03831691632241dc529161069791906004016116c1565b600060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050507fc251bde8ae398be4a0f10fc061bb0cf6e5decd8860b54b7607d06bb6c142d0188882846106f5610cf5565b60405161070594939291906116d4565b60405180910390a150506001016104d8565b50949350505050565b6000828152600260205260408120819061073a9084610e72565b9150915081158061074c575060018114155b15610795576040517f4b2fac56000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038416602482015260440161056f565b6000836001600160a01b031663c19d93fb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f99190611727565b9050600381600381111561080f5761080f611748565b1461084a5783816040517f7312850c00000000000000000000000000000000000000000000000000000000815260040161056f92919061175e565b60008581526002602052604090206108629085610e99565b507fa0598050070757d3cfb55dc6d3bd9f6ac70f5c9e58e5aa29392a9b9c9cf28ef0858561088e610cf5565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a15050505050565b60008181526002602052604090206060906108d790610eb5565b92915050565b6000818152600260205260408120606091906108f890610eb5565b9050805167ffffffffffffffff81111561091457610914611429565b60405190808252806020026020018201604052801561097d57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816109325790505b50915060005b8151811015610abf5760008282815181106109a0576109a061143f565b602002602001015190506040518060600160405280826001600160a01b03168152602001826001600160a01b03166311cda4156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a26919061140c565b6001600160a01b03168152602001826001600160a01b031663cdfceeba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a969190611799565b815250848381518110610aab57610aab61143f565b602090810291909101015250600101610983565b5050919050565b610ace610c7e565b60005b81811015610b80576000838383818110610aed57610aed61143f565b9050602002016020810190610b02919061121a565b6001600160a01b0381166000908152600160208190526040909120805460ff1916909117905590507f47459529aa21b5f8615a27cd523fad12250733748e422c3eada707a36d3c49bc81610b54610cf5565b604080516001600160a01b0393841681529290911660208301520160405180910390a150600101610ad1565b505050565b610b8d610c7e565b610b976000610ec2565b565b600082815260026020526040812081908190610bb59085610e72565b91509150818015610bc65750600181145b95945050505050565b610bd7610c7e565b6001600160a01b038116610c1a576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161056f565b610c2381610ec2565b50565b610c2e610c7e565b6001600160a01b0381166000908152600160208190526040909120805460ff191690911790557f47459529aa21b5f8615a27cd523fad12250733748e422c3eada707a36d3c49bc8161037d610cf5565b610c86610cf5565b6001600160a01b0316610ca16000546001600160a01b031690565b6001600160a01b031614610b9757610cb7610cf5565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161056f565b6000610cff610f2a565b905090565b6000610d0e610cf5565b9050836001600160a01b0316816001600160a01b031614158015610df657506040517f348b684e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df491906117b2565b155b15610e4e576040517f264deeaa0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015282166024820152604481018490526064810183905260840161056f565b50505050565b6000610e6a846001600160a01b03851684610f9f565b949350505050565b6000808080610e8a866001600160a01b038716610fbc565b909450925050505b9250929050565b6000610eae836001600160a01b038416610ff6565b9392505050565b60606000610eae83611013565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000366014336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610f675750808210155b15610f9757600036610f7983856117d4565b610f849282906117f5565b610f8d9161181f565b60601c9250505090565b339250505090565b60008281526002840160205260408120829055610e6a848461101e565b6000818152600283016020526040812054819080610feb57610fde858561102a565b925060009150610e929050565b600192509050610e92565b60008181526002830160205260408120819055610eae8383611036565b60606108d782611042565b6000610eae838361104f565b6000610eae838361109e565b6000610eae83836110b6565b60606000610eae836111a9565b6000818152600183016020526040812054611096575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108d7565b5060006108d7565b60008181526001830160205260408120541515610eae565b6000818152600183016020526040812054801561119f5760006110da6001836117d4565b85549091506000906110ee906001906117d4565b905080821461115357600086600001828154811061110e5761110e61143f565b90600052602060002001549050808760000184815481106111315761113161143f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061116457611164611867565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108d7565b60009150506108d7565b6060816000018054806020026020016040519081016040528092919081815260200182805480156111f957602002820191906000526020600020905b8154815260200190600101908083116111e5575b50505050509050919050565b6001600160a01b0381168114610c2357600080fd5b60006020828403121561122c57600080fd5b8135610eae81611205565b60008083601f84011261124957600080fd5b50813567ffffffffffffffff81111561126157600080fd5b6020830191508360208260051b8501011115610e9257600080fd5b6000806000806060858703121561129257600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156112b757600080fd5b6112c387828801611237565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156113105783516001600160a01b0316835292840192918401916001016112eb565b50909695505050505050565b6000806040838503121561132f57600080fd5b82359150602083013561134181611205565b809150509250929050565b60006020828403121561135e57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156113bd57815180516001600160a01b0390811686528782015116878601528501518585015260609093019290850190600101611382565b5091979650505050505050565b600080602083850312156113dd57600080fd5b823567ffffffffffffffff8111156113f457600080fd5b61140085828601611237565b90969095509350505050565b60006020828403121561141e57600080fd5b8151610eae81611205565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261148957600080fd5b9190910192915050565b6040805190810167ffffffffffffffff811182821017156114b6576114b6611429565b60405290565b6040516080810167ffffffffffffffff811182821017156114b6576114b6611429565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152657611526611429565b604052919050565b6000604080833603121561154157600080fd5b611549611493565b833561155481611205565b815260208481013567ffffffffffffffff8082111561157257600080fd5b9086019036601f83011261158557600080fd5b81358181111561159757611597611429565b6115a5848260051b016114df565b818152848101925060079190911b8301840190368211156115c557600080fd5b928401925b8184101561163f57608084360312156115e35760008081fd5b6115eb6114bc565b84356115f681611205565b81528486013563ffffffff8116811461160f5760008081fd5b818701528488013561162081611205565b81890152606085810135908201528352608090930192918401916115ca565b93850193909352509195945050505050565b60008151808452602080850194506020840160005b838110156116b657815180516001600160a01b0390811689528482015163ffffffff16858a0152604080830151909116908901526060908101519088015260809096019590820190600101611666565b509495945050505050565b602081526000610eae6020830184611651565b84815260006001600160a01b038086166020840152608060408401528085511660808401526020850151604060a085015261171260c0850182611651565b92505080841660608401525095945050505050565b60006020828403121561173957600080fd5b815160048110610eae57600080fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0383168152604081016004831061178c57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b6000602082840312156117ab57600080fd5b5051919050565b6000602082840312156117c457600080fd5b81518015158114610eae57600080fd5b818103818111156108d757634e487b7160e01b600052601160045260246000fd5b6000808585111561180557600080fd5b8386111561181257600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000813581811691601485101561185f5780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212209351511d75691661f346fc6c56deae277afe5f1687139af351958095a82803f864736f6c63430008170033",
686
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c8063715018a6116100b25780638da5cb5b11610081578063f2fde38b11610066578063f2fde38b146102de578063f434c914146102f1578063f73ac20f1461031857600080fd5b80638da5cb5b146102aa578063a1031a4f146102bb57600080fd5b8063715018a6146102425780637da0a8771461024a57806383db9d011461027057806388bc2ef31461028357600080fd5b80633d12cb87116100ee5780633d12cb87146101ac578063572b6c05146101bf5780635d6f1fc51461020f578063669745a51461022f57600080fd5b8063153bb1bb14610120578063293c4999146101355780632f3f50e014610179578063314fcc3814610199575b600080fd5b61013361012e36600461121a565b61032b565b005b61015c7f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d481565b6040516001600160a01b0390911681526020015b60405180910390f35b61018c61018736600461127c565b6103a3565b60405161017091906112cf565b6101336101a736600461131c565b610720565b61018c6101ba36600461134c565b6108bd565b6101ff6101cd36600461121a565b7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666001600160a01b0390811691161490565b6040519015158152602001610170565b61022261021d36600461134c565b6108dd565b6040516101709190611365565b61013361023d3660046113ca565b610ac6565b610133610b85565b7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb56661015c565b6101ff61027e36600461131c565b610b99565b61015c7f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf81565b6000546001600160a01b031661015c565b6101ff6102c936600461121a565b60016020526000908152604090205460ff1681565b6101336102ec36600461121a565b610bcf565b61015c7f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d81565b61013361032636600461121a565b610c26565b610333610c7e565b6001600160a01b0381166000908152600160205260409020805460ff191690557f1b9942be0c71843c19753c9070512cdce46255a7bf38934a6175b1a684950b948161037d610cf5565b604080516001600160a01b0393841681529290911660208301520160405180910390a150565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101859052606090610454906001600160a01b037f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d41690636352211e90602401602060405180830381865afa158015610428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044c919061140c565b86601d610d04565b8167ffffffffffffffff81111561046d5761046d611429565b604051908082528060200260200182016040528015610496578160200160208202803683370190505b5090506104a1610cf5565b604080516001600160a01b039092166020830152810185905260600160405160208183030381529060405280519060200120935060005b828110156107175760008484838181106104f4576104f461143f565b90506020028101906105069190611455565b61050f9061152e565b80516001600160a01b031660009081526001602052604090205490915060ff166105785780516040517f2223f1010000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b80516040517f1213036600000000000000000000000000000000000000000000000000000000815260048101899052602481018890526000916001600160a01b0316906312130366906044016020604051808303816000875af11580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610607919061140c565b90508084848151811061061c5761061c61143f565b6001600160a01b03909216602092830291909101820152600089815260029091526040902061064d90826001610e54565b5060208201516040517f2241dc520000000000000000000000000000000000000000000000000000000081526001600160a01b03831691632241dc529161069791906004016116c1565b600060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050507fc251bde8ae398be4a0f10fc061bb0cf6e5decd8860b54b7607d06bb6c142d0188882846106f5610cf5565b60405161070594939291906116d4565b60405180910390a150506001016104d8565b50949350505050565b6000828152600260205260408120819061073a9084610e72565b9150915081158061074c575060018114155b15610795576040517f4b2fac56000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b038416602482015260440161056f565b6000836001600160a01b031663c19d93fb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f99190611727565b9050600381600381111561080f5761080f611748565b1461084a5783816040517f7312850c00000000000000000000000000000000000000000000000000000000815260040161056f92919061175e565b60008581526002602052604090206108629085610e99565b507fa0598050070757d3cfb55dc6d3bd9f6ac70f5c9e58e5aa29392a9b9c9cf28ef0858561088e610cf5565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a15050505050565b60008181526002602052604090206060906108d790610eb5565b92915050565b6000818152600260205260408120606091906108f890610eb5565b9050805167ffffffffffffffff81111561091457610914611429565b60405190808252806020026020018201604052801561097d57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816109325790505b50915060005b8151811015610abf5760008282815181106109a0576109a061143f565b602002602001015190506040518060600160405280826001600160a01b03168152602001826001600160a01b03166311cda4156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a26919061140c565b6001600160a01b03168152602001826001600160a01b031663cdfceeba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a969190611799565b815250848381518110610aab57610aab61143f565b602090810291909101015250600101610983565b5050919050565b610ace610c7e565b60005b81811015610b80576000838383818110610aed57610aed61143f565b9050602002016020810190610b02919061121a565b6001600160a01b0381166000908152600160208190526040909120805460ff1916909117905590507f47459529aa21b5f8615a27cd523fad12250733748e422c3eada707a36d3c49bc81610b54610cf5565b604080516001600160a01b0393841681529290911660208301520160405180910390a150600101610ad1565b505050565b610b8d610c7e565b610b976000610ec2565b565b600082815260026020526040812081908190610bb59085610e72565b91509150818015610bc65750600181145b95945050505050565b610bd7610c7e565b6001600160a01b038116610c1a576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161056f565b610c2381610ec2565b50565b610c2e610c7e565b6001600160a01b0381166000908152600160208190526040909120805460ff191690911790557f47459529aa21b5f8615a27cd523fad12250733748e422c3eada707a36d3c49bc8161037d610cf5565b610c86610cf5565b6001600160a01b0316610ca16000546001600160a01b031690565b6001600160a01b031614610b9757610cb7610cf5565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161056f565b6000610cff610f2a565b905090565b6000610d0e610cf5565b9050836001600160a01b0316816001600160a01b031614158015610df657506040517f348b684e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d169063348b684e9060c401602060405180830381865afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df491906117b2565b155b15610e4e576040517f264deeaa0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015282166024820152604481018490526064810183905260840161056f565b50505050565b6000610e6a846001600160a01b03851684610f9f565b949350505050565b6000808080610e8a866001600160a01b038716610fbc565b909450925050505b9250929050565b6000610eae836001600160a01b038416610ff6565b9392505050565b60606000610eae83611013565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000366014336001600160a01b037f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb56616148015610f675750808210155b15610f9757600036610f7983856117d4565b610f849282906117f5565b610f8d9161181f565b60601c9250505090565b339250505090565b60008281526002840160205260408120829055610e6a848461101e565b6000818152600283016020526040812054819080610feb57610fde858561102a565b925060009150610e929050565b600192509050610e92565b60008181526002830160205260408120819055610eae8383611036565b60606108d782611042565b6000610eae838361104f565b6000610eae838361109e565b6000610eae83836110b6565b60606000610eae836111a9565b6000818152600183016020526040812054611096575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108d7565b5060006108d7565b60008181526001830160205260408120541515610eae565b6000818152600183016020526040812054801561119f5760006110da6001836117d4565b85549091506000906110ee906001906117d4565b905080821461115357600086600001828154811061110e5761110e61143f565b90600052602060002001549050808760000184815481106111315761113161143f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061116457611164611867565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108d7565b60009150506108d7565b6060816000018054806020026020016040519081016040528092919081815260200182805480156111f957602002820191906000526020600020905b8154815260200190600101908083116111e5575b50505050509050919050565b6001600160a01b0381168114610c2357600080fd5b60006020828403121561122c57600080fd5b8135610eae81611205565b60008083601f84011261124957600080fd5b50813567ffffffffffffffff81111561126157600080fd5b6020830191508360208260051b8501011115610e9257600080fd5b6000806000806060858703121561129257600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156112b757600080fd5b6112c387828801611237565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156113105783516001600160a01b0316835292840192918401916001016112eb565b50909695505050505050565b6000806040838503121561132f57600080fd5b82359150602083013561134181611205565b809150509250929050565b60006020828403121561135e57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156113bd57815180516001600160a01b0390811686528782015116878601528501518585015260609093019290850190600101611382565b5091979650505050505050565b600080602083850312156113dd57600080fd5b823567ffffffffffffffff8111156113f457600080fd5b61140085828601611237565b90969095509350505050565b60006020828403121561141e57600080fd5b8151610eae81611205565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261148957600080fd5b9190910192915050565b6040805190810167ffffffffffffffff811182821017156114b6576114b6611429565b60405290565b6040516080810167ffffffffffffffff811182821017156114b6576114b6611429565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152657611526611429565b604052919050565b6000604080833603121561154157600080fd5b611549611493565b833561155481611205565b815260208481013567ffffffffffffffff8082111561157257600080fd5b9086019036601f83011261158557600080fd5b81358181111561159757611597611429565b6115a5848260051b016114df565b818152848101925060079190911b8301840190368211156115c557600080fd5b928401925b8184101561163f57608084360312156115e35760008081fd5b6115eb6114bc565b84356115f681611205565b81528486013563ffffffff8116811461160f5760008081fd5b818701528488013561162081611205565b81890152606085810135908201528352608090930192918401916115ca565b93850193909352509195945050505050565b60008151808452602080850194506020840160005b838110156116b657815180516001600160a01b0390811689528482015163ffffffff16858a0152604080830151909116908901526060908101519088015260809096019590820190600101611666565b509495945050505050565b602081526000610eae6020830184611651565b84815260006001600160a01b038086166020840152608060408401528085511660808401526020850151604060a085015261171260c0850182611651565b92505080841660608401525095945050505050565b60006020828403121561173957600080fd5b815160048110610eae57600080fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0383168152604081016004831061178c57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b6000602082840312156117ab57600080fd5b5051919050565b6000602082840312156117c457600080fd5b81518015158114610eae57600080fd5b818103818111156108d757634e487b7160e01b600052601160045260246000fd5b6000808585111561180557600080fd5b8386111561181257600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000813581811691601485101561185f5780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212209351511d75691661f346fc6c56deae277afe5f1687139af351958095a82803f864736f6c63430008170033",
687
+ "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trusted_forwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"name\":\"JBPermissioned_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IJBSuckerDeployer\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"JBSuckerRegistry_InvalidDeployer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"name\":\"JBSuckerRegistry_RulesetDoesNotAllowAddingSucker\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sucker\",\"type\":\"address\"}],\"name\":\"JBSuckerRegistry_SuckerDoesNotBelongToProject\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sucker\",\"type\":\"address\"},{\"internalType\":\"enum JBSuckerState\",\"name\":\"suckerState\",\"type\":\"uint8\"}],\"name\":\"JBSuckerRegistry_SuckerIsNotDeprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\":false,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sucker\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IJBSuckerDeployer\",\"name\":\"deployer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minBridgeAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenMapping[]\",\"name\":\"mappings\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct JBSuckerDeployerConfig\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SuckerDeployedFor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SuckerDeployerAllowed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SuckerDeployerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sucker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SuckerDeprecated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"allowSuckerDeployer\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"deployers\",\"type\":\"address[]\"}],\"name\":\"allowSuckerDeployers\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"contract IJBSuckerDeployer\",\"name\":\"deployer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minBridgeAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenMapping[]\",\"name\":\"mappings\",\"type\":\"tuple[]\"}],\"internalType\":\"struct JBSuckerDeployerConfig[]\",\"name\":\"configurations\",\"type\":\"tuple[]\"}],\"name\":\"deploySuckersFor\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"suckers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isSuckerOf\",\"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\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sucker\",\"type\":\"address\"}],\"name\":\"removeDeprecatedSucker\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"removeSuckerDeployer\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"suckerDeployerIsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"name\":\"suckerPairsOf\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"local\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remote\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"remoteChainId\",\"type\":\"uint256\"}],\"internalType\":\"struct JBSuckersPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"name\":\"suckersOf\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowSuckerDeployer(address)\":{\"details\":\"Can only be called by this contract's owner (initially project ID 1, or JuiceboxDAO).\",\"params\":{\"deployer\":\"The address of the deployer to add.\"}},\"allowSuckerDeployers(address[])\":{\"details\":\"Can only be called by this contract's owner (initially project ID 1, or JuiceboxDAO).\",\"params\":{\"deployers\":\"The address of the deployer to add.\"}},\"constructor\":{\"params\":{\"directory\":\"The juicebox directory.\",\"initialOwner\":\"The initial owner of this contract.\",\"permissions\":\"A contract storing permissions.\"}},\"deploySuckersFor(uint256,bytes32,(address,(address,uint32,address,uint256)[])[])\":{\"details\":\"The caller must be the project's owner or have `JBPermissionIds.DEPLOY_SUCKERS` from the project's owner.\",\"params\":{\"configurations\":\"The sucker deployer configs to use to deploy the suckers.\",\"projectId\":\"The ID of the project to deploy suckers for.\",\"salt\":\"The salt used to deploy the contract. For the suckers to be peers, this must be the same value on each chain where suckers are deployed.\"},\"returns\":{\"suckers\":\"The addresses of the deployed suckers.\"}},\"isSuckerOf(uint256,address)\":{\"params\":{\"addr\":\"The address of the sucker to check.\",\"projectId\":\"The ID of the project to check for.\"},\"returns\":{\"_0\":\"flag A flag indicating if the sucker belongs to the project, and was deployed through this registry.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeDeprecatedSucker(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to remove the sucker from.\",\"sucker\":\"The address of the deprecated sucker to remove.\"}},\"removeSuckerDeployer(address)\":{\"details\":\"Can only be called by this contract's owner (initially project ID 1, or JuiceboxDAO).\",\"params\":{\"deployer\":\"The address of the deployer to remove.\"}},\"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.\"},\"suckerPairsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the suckers of.\"},\"returns\":{\"pairs\":\"The pairs of suckers and their metadata.\"}},\"suckersOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the suckers of.\"},\"returns\":{\"_0\":\"suckers The addresses of the suckers.\"}},\"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\":{\"DIRECTORY()\":{\"notice\":\"The juicebox directory.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"},\"allowSuckerDeployer(address)\":{\"notice\":\"Adds a suckers deployer to the allowlist.\"},\"allowSuckerDeployers(address[])\":{\"notice\":\"Adds multiple suckers deployer to the allowlist.\"},\"deploySuckersFor(uint256,bytes32,(address,(address,uint32,address,uint256)[])[])\":{\"notice\":\"Deploy one or more suckers for the specified project.\"},\"isSuckerOf(uint256,address)\":{\"notice\":\"Returns true if the specified sucker belongs to the specified project, and was deployed through this registry.\"},\"removeDeprecatedSucker(uint256,address)\":{\"notice\":\"Lets anyone remove a deprecated sucker from a project.\"},\"removeSuckerDeployer(address)\":{\"notice\":\"Removes a sucker deployer from the allowlist.\"},\"suckerDeployerIsAllowed(address)\":{\"notice\":\"Tracks whether the specified sucker deployer is approved by this registry.\"},\"suckerPairsOf(uint256)\":{\"notice\":\"Helper function for retrieving the projects suckers and their metadata.\"},\"suckersOf(uint256)\":{\"notice\":\"Gets all of the specified project's suckers which were deployed through this registry.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/JBSuckerRegistry.sol\":\"JBSuckerRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@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/\",\"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/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/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/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/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/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"]},\"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/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/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/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/permission-ids-v5/src/JBPermissionIds.sol\":{\"keccak256\":\"0x03d598c570091f294bebe9c7b59bfc2d907d5b70a3193c3bdb9ddec67edae1e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afb1aefda01e53fa79441bab1fa9cb46154e0db9d16bec8f9b7fa80d200916db\",\"dweb:/ipfs/Qmbkt9HgWmz5rgehRttkzFqW9SkwRYvXYqtHmuxHVxz8ZD\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0xafb7be6c8945a04bdd080fd6a3a3d0fa0329f1ad0d3bcd431dc1dcf2462d3da9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a595aaee5f9fcfa163293afd9518d069fa424bffbf65d53d961d0394ed1dc5\",\"dweb:/ipfs/Qmb8U9Z38K1nmKwP895JoUo8pupwexUnjzcgAC6STzpQo4\"]},\"node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/JBSuckerRegistry.sol\":{\"keccak256\":\"0x497b2df5d7c50a01fc55878118039f0ec66c127b29edbd16fa6485494063ad12\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0667a124ee1c73e0709216fa1c0745ddc166755bcac8ff74c8161b5b254480d1\",\"dweb:/ipfs/QmZcY6tJFYo2WhiXJAhvwpWXiKpNMNUDZ31mFGMfKTC68x\"]},\"src/enums/JBAddToBalanceMode.sol\":{\"keccak256\":\"0x0c18399ed85e6ad5ade75726af9f74e876ae4cf1e8e9d320d50006e320288e1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0080f23626ae9121aad63ba6ec37e95a5b6843de4732f9c7f16b4d09ae3d0880\",\"dweb:/ipfs/QmXudDnVpDAy7Yu7DRb7AZVJEsuK6afse7WtLE2uK12xYo\"]},\"src/enums/JBSuckerState.sol\":{\"keccak256\":\"0x0ee6d0d08cd4f538b8c9ff59d480c7c3371c4cb1971e5a67a89088b4b040a608\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8cce8e51b084cc9a844dc1040aba00b63b01f97868d52cc9f38b9d354fd741f\",\"dweb:/ipfs/QmTveKLmdZAGbwEwaCTBwofSBtckZsDcew3E7iNTnpeskY\"]},\"src/interfaces/IJBSucker.sol\":{\"keccak256\":\"0xc5637080a3bd632b53ca57457a09f252647e1aedd007a21ba9d2fcff8859b343\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://285815a5dc3f29bee503ecc9e7614d49f5e8fd44a6037c3a72e787694a59aebd\",\"dweb:/ipfs/QmccChKT2Gs1Tmeg4LgQAY1ejigdvQYHBo8AQCMfHLMg2j\"]},\"src/interfaces/IJBSuckerDeployer.sol\":{\"keccak256\":\"0x6913c0677d52e01cd2d6f785846a255fcc1783e6b90d15a2f296289d4f482026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24781b17a192ec8bc2d8ab47400a06e4eed2320bc5537489a1f7bbdaed078ad2\",\"dweb:/ipfs/QmbTUkAvFxcAHhjy8hvJ4uUo4PyeKK4BVuU4YtR3QT7s68\"]},\"src/interfaces/IJBSuckerRegistry.sol\":{\"keccak256\":\"0x65aaa205ac5ffc4a4d9a38a39cf5b427e6c58d610cf042854a27c41f0d7d8b8e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9f279b1e5868b8c6b80220c87a4ad5f3a95665fabe0467e2b0601bd910a20592\",\"dweb:/ipfs/QmUqFEoGdUUNgH5FGWnXewSPzjZqG73b2z5nsJevG165oX\"]},\"src/structs/JBClaim.sol\":{\"keccak256\":\"0xd616fb935e61727ce04832808667bd40dc121d66f5cc2f347018dfd971635dab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfdcfb12878dc03b4623ddfaa42afa7e8270e8a259a8c453ef4f7e916ca52876\",\"dweb:/ipfs/QmZyAUzatUq2HfGBpoKbeqkC7mpetQC27M3797wgNgkE6H\"]},\"src/structs/JBInboxTreeRoot.sol\":{\"keccak256\":\"0xc1d8a61fc49d5d095486b194b7041595dc7639db33e3e310b1703d21caa184da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1c2d8480b823b25a55c4a9af0e6fb4bf6f8c0cba16f71bebf53585a5a86db6d\",\"dweb:/ipfs/QmY9Jbbb1PB9T8UHHjBq2Eq72zu5sPoSPYwVApbypLJtwB\"]},\"src/structs/JBLeaf.sol\":{\"keccak256\":\"0x4b71bd2b39022b2f7e59f45d967118ce47061db02e1e827ab4cc6f3a3b960107\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6fd76058f73ff40da48553412b95c2c3f00ddbb2a59d0774b207ab98d555a9\",\"dweb:/ipfs/QmPMe4J6MvRt1hKdDtUGXJoiZjWxqh736ds79bh2fJQEeN\"]},\"src/structs/JBMessageRoot.sol\":{\"keccak256\":\"0xed41178db7810558f486583d76382b8eb77f586648e7522070475d5e576a869c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2516fee99b547fa4008f8e3f40a7ef86701b286e9e4ceabd8ae24e3e67b8cf42\",\"dweb:/ipfs/QmeiNo3zgHkqSczQEmCK4S7R5BZwPM9RJp9dnjqqQRNyku\"]},\"src/structs/JBOutboxTree.sol\":{\"keccak256\":\"0x900ddc463282f90537e6e6f80d9217bc8da68c06c79c0ba66be1a48ba3647d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e88c122091442114e734a9f6130cd3019add220f804518b82abbcb82726e5ee\",\"dweb:/ipfs/QmeG4grFoBaRbqPj5nDbxTt6V9mb8tvRLnMBzNSKkwKeyR\"]},\"src/structs/JBRemoteToken.sol\":{\"keccak256\":\"0xa675639bbc082957d4ea05b4c840d472f1777ad22fc78b0b32962fccc3f19995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9cdd472cfb3efeb2e3c7a7032e844abcce7f615d8d67eb4b33280968d8f8fb0\",\"dweb:/ipfs/QmfPUPLrxNVEYUaYzkAV7CaDX6YRfx2aJ8qDhLPFaXEGEA\"]},\"src/structs/JBSuckerDeployerConfig.sol\":{\"keccak256\":\"0xf62c06876ee13ee67630dcc82c10264264c062f20972ff65a9c1d87a554d2379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff81847604f9f1cd2a6c3b687759e69f4beddd67f8dc78488d81ca6aa1e7cc5d\",\"dweb:/ipfs/QmRJPRQq1ifZnGnf3V7xXoVarwTywAut4zq6jnhawtivPE\"]},\"src/structs/JBSuckersPair.sol\":{\"keccak256\":\"0xfe76a400e1fa57758973705a9cbac4fab125785b97b49b752b5c13d414f6938b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d2449d365b5e45ed09c70cf4cfa4d2c9bccd492be5e1562f0b3fc2a10ccaf63\",\"dweb:/ipfs/QmYVrJVm7wKtGJ1hnPaHjfFgyKtA5LAJUrkMgSVRupj7AW\"]},\"src/structs/JBTokenMapping.sol\":{\"keccak256\":\"0x124f304139003b90ce0b15063d9d79a4990c8b2b6b0444fb0ebf2e2c213faabe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7411e1be2809991b66659dcfabf300550d356ae04d77a001ab33ba96eb109b\",\"dweb:/ipfs/QmdzMYmaxL7FTreDTV3qEScDPECZJga1HRE5yLZB2Zq3Tb\"]},\"src/utils/MerkleLib.sol\":{\"keccak256\":\"0xbe3c73ca7be5471a742f409c921cdb641b77600bb5eacd4b47c36ccd92955d47\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b944fd8fa55e70696313ceac05ecb23ef81e0cd58386af75fc03953b69900efd\",\"dweb:/ipfs/QmSBPBakyc8vtcnu5YjGHXGgnpuc9tFW2eejiawp8z9yrk\"]}},\"version\":1}",
688
+ "gitCommit": "15954670a31005d16a26229742a824cdc93eee06",
689
+ "history": []
690
+ }