@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.
Files changed (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/REVNET_SECURITY_CHECKLIST.md +164 -0
  4. package/SECURITY.md +68 -0
  5. package/SKILLS.md +166 -0
  6. package/deployments/revnet-core-v5/arbitrum/REVDeployer.json +2821 -0
  7. package/deployments/revnet-core-v5/arbitrum/REVLoans.json +2260 -0
  8. package/deployments/revnet-core-v5/arbitrum_sepolia/REVDeployer.json +2821 -0
  9. package/deployments/revnet-core-v5/arbitrum_sepolia/REVLoans.json +2260 -0
  10. package/deployments/revnet-core-v5/base/REVDeployer.json +2825 -0
  11. package/deployments/revnet-core-v5/base/REVLoans.json +2264 -0
  12. package/deployments/revnet-core-v5/base_sepolia/REVDeployer.json +2825 -0
  13. package/deployments/revnet-core-v5/base_sepolia/REVLoans.json +2264 -0
  14. package/deployments/revnet-core-v5/ethereum/REVDeployer.json +2825 -0
  15. package/deployments/revnet-core-v5/ethereum/REVLoans.json +2264 -0
  16. package/deployments/revnet-core-v5/optimism/REVDeployer.json +2821 -0
  17. package/deployments/revnet-core-v5/optimism/REVLoans.json +2260 -0
  18. package/deployments/revnet-core-v5/optimism_sepolia/REVDeployer.json +2825 -0
  19. package/deployments/revnet-core-v5/optimism_sepolia/REVLoans.json +2264 -0
  20. package/deployments/revnet-core-v5/sepolia/REVDeployer.json +2825 -0
  21. package/deployments/revnet-core-v5/sepolia/REVLoans.json +2264 -0
  22. package/docs/book.css +13 -0
  23. package/docs/book.toml +13 -0
  24. package/docs/solidity.min.js +74 -0
  25. package/docs/src/README.md +88 -0
  26. package/docs/src/SUMMARY.md +20 -0
  27. package/docs/src/src/README.md +7 -0
  28. package/docs/src/src/REVDeployer.sol/contract.REVDeployer.md +968 -0
  29. package/docs/src/src/REVLoans.sol/contract.REVLoans.md +1047 -0
  30. package/docs/src/src/interfaces/IREVDeployer.sol/interface.IREVDeployer.md +243 -0
  31. package/docs/src/src/interfaces/IREVLoans.sol/interface.IREVLoans.md +296 -0
  32. package/docs/src/src/interfaces/README.md +5 -0
  33. package/docs/src/src/structs/README.md +14 -0
  34. package/docs/src/src/structs/REVAutoIssuance.sol/struct.REVAutoIssuance.md +19 -0
  35. package/docs/src/src/structs/REVBuybackHookConfig.sol/struct.REVBuybackHookConfig.md +19 -0
  36. package/docs/src/src/structs/REVBuybackPoolConfig.sol/struct.REVBuybackPoolConfig.md +21 -0
  37. package/docs/src/src/structs/REVConfig.sol/struct.REVConfig.md +35 -0
  38. package/docs/src/src/structs/REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md +28 -0
  39. package/docs/src/src/structs/REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md +34 -0
  40. package/docs/src/src/structs/REVDescription.sol/struct.REVDescription.md +23 -0
  41. package/docs/src/src/structs/REVLoan.sol/struct.REVLoan.md +28 -0
  42. package/docs/src/src/structs/REVLoanSource.sol/struct.REVLoanSource.md +16 -0
  43. package/docs/src/src/structs/REVStageConfig.sol/struct.REVStageConfig.md +44 -0
  44. package/docs/src/src/structs/REVSuckerDeploymentConfig.sol/struct.REVSuckerDeploymentConfig.md +16 -0
  45. package/foundry.lock +11 -0
  46. package/foundry.toml +23 -0
  47. package/package.json +31 -0
  48. package/remappings.txt +1 -0
  49. package/script/Deploy.s.sol +350 -0
  50. package/script/helpers/RevnetCoreDeploymentLib.sol +72 -0
  51. package/slither-ci.config.json +10 -0
  52. package/sphinx.lock +507 -0
  53. package/src/REVDeployer.sol +1257 -0
  54. package/src/REVLoans.sol +1333 -0
  55. package/src/interfaces/IREVDeployer.sol +198 -0
  56. package/src/interfaces/IREVLoans.sol +241 -0
  57. package/src/structs/REVAutoIssuance.sol +11 -0
  58. package/src/structs/REVConfig.sol +17 -0
  59. package/src/structs/REVCroptopAllowedPost.sol +20 -0
  60. package/src/structs/REVDeploy721TiersHookConfig.sol +25 -0
  61. package/src/structs/REVDescription.sol +14 -0
  62. package/src/structs/REVLoan.sol +19 -0
  63. package/src/structs/REVLoanSource.sol +11 -0
  64. package/src/structs/REVStageConfig.sol +34 -0
  65. package/src/structs/REVSuckerDeploymentConfig.sol +11 -0
  66. package/test/REV.integrations.t.sol +420 -0
  67. package/test/REVAutoIssuanceFuzz.t.sol +276 -0
  68. package/test/REVDeployerAuditRegressions.t.sol +328 -0
  69. package/test/REVInvincibility.t.sol +1275 -0
  70. package/test/REVInvincibilityHandler.sol +357 -0
  71. package/test/REVLifecycle.t.sol +364 -0
  72. package/test/REVLoans.invariants.t.sol +642 -0
  73. package/test/REVLoansAttacks.t.sol +739 -0
  74. package/test/REVLoansAuditRegressions.t.sol +314 -0
  75. package/test/REVLoansFeeRecovery.t.sol +704 -0
  76. package/test/REVLoansSourced.t.sol +1732 -0
  77. package/test/REVLoansUnSourced.t.sol +331 -0
  78. package/test/TestPR09_ConversionDocumentation.t.sol +304 -0
  79. package/test/TestPR10_LiquidationBehavior.t.sol +340 -0
  80. package/test/TestPR11_LowFindings.t.sol +571 -0
  81. package/test/TestPR12_FlashLoanSurplus.t.sol +305 -0
  82. package/test/TestPR13_CrossSourceReallocation.t.sol +302 -0
  83. package/test/TestPR15_CashOutCallerValidation.t.sol +320 -0
  84. package/test/TestPR16_ZeroRepayment.t.sol +297 -0
  85. package/test/TestPR21_Uint112Overflow.t.sol +251 -0
  86. package/test/TestPR22_HookArrayOOB.t.sol +221 -0
  87. package/test/TestPR26_BurnHeldTokens.t.sol +331 -0
  88. package/test/TestPR27_CEIPattern.t.sol +448 -0
  89. package/test/TestPR29_SwapTerminalPermission.t.sol +206 -0
  90. package/test/TestPR32_MixedFixes.t.sol +529 -0
  91. package/test/helpers/MaliciousContracts.sol +233 -0
  92. package/test/mock/MockBuybackDataHook.sol +61 -0
@@ -0,0 +1,2825 @@
1
+ {
2
+ "format": "sphinx-sol-ct-artifact-1",
3
+ "merkleRoot": "0x948b5063b043c4f0632a523280a323cc157913fa9652234d2e94ee89a8f8059f",
4
+ "address": "0x2ca27bde7e7d33e353b44c27acfcf6c78dde251d",
5
+ "sourceName": "src/REVDeployer.sol",
6
+ "contractName": "REVDeployer",
7
+ "chainId": "0xaa36a7",
8
+ "abi": [
9
+ {
10
+ "inputs": [
11
+ {
12
+ "internalType": "contract IJBController",
13
+ "name": "controller",
14
+ "type": "address"
15
+ },
16
+ {
17
+ "internalType": "contract IJBSuckerRegistry",
18
+ "name": "suckerRegistry",
19
+ "type": "address"
20
+ },
21
+ {
22
+ "internalType": "uint256",
23
+ "name": "feeRevnetId",
24
+ "type": "uint256"
25
+ },
26
+ {
27
+ "internalType": "contract IJB721TiersHookDeployer",
28
+ "name": "hookDeployer",
29
+ "type": "address"
30
+ },
31
+ {
32
+ "internalType": "contract CTPublisher",
33
+ "name": "publisher",
34
+ "type": "address"
35
+ },
36
+ {
37
+ "internalType": "address",
38
+ "name": "trustedForwarder",
39
+ "type": "address"
40
+ }
41
+ ],
42
+ "stateMutability": "nonpayable",
43
+ "type": "constructor"
44
+ },
45
+ {
46
+ "inputs": [],
47
+ "name": "CASH_OUT_DELAY",
48
+ "outputs": [
49
+ {
50
+ "internalType": "uint256",
51
+ "name": "",
52
+ "type": "uint256"
53
+ }
54
+ ],
55
+ "stateMutability": "view",
56
+ "type": "function"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "CONTROLLER",
61
+ "outputs": [
62
+ {
63
+ "internalType": "contract IJBController",
64
+ "name": "",
65
+ "type": "address"
66
+ }
67
+ ],
68
+ "stateMutability": "view",
69
+ "type": "function"
70
+ },
71
+ {
72
+ "inputs": [],
73
+ "name": "DIRECTORY",
74
+ "outputs": [
75
+ {
76
+ "internalType": "contract IJBDirectory",
77
+ "name": "",
78
+ "type": "address"
79
+ }
80
+ ],
81
+ "stateMutability": "view",
82
+ "type": "function"
83
+ },
84
+ {
85
+ "inputs": [],
86
+ "name": "FEE",
87
+ "outputs": [
88
+ {
89
+ "internalType": "uint256",
90
+ "name": "",
91
+ "type": "uint256"
92
+ }
93
+ ],
94
+ "stateMutability": "view",
95
+ "type": "function"
96
+ },
97
+ {
98
+ "inputs": [],
99
+ "name": "FEE_REVNET_ID",
100
+ "outputs": [
101
+ {
102
+ "internalType": "uint256",
103
+ "name": "",
104
+ "type": "uint256"
105
+ }
106
+ ],
107
+ "stateMutability": "view",
108
+ "type": "function"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "HOOK_DEPLOYER",
113
+ "outputs": [
114
+ {
115
+ "internalType": "contract IJB721TiersHookDeployer",
116
+ "name": "",
117
+ "type": "address"
118
+ }
119
+ ],
120
+ "stateMutability": "view",
121
+ "type": "function"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "PERMISSIONS",
126
+ "outputs": [
127
+ {
128
+ "internalType": "contract IJBPermissions",
129
+ "name": "",
130
+ "type": "address"
131
+ }
132
+ ],
133
+ "stateMutability": "view",
134
+ "type": "function"
135
+ },
136
+ {
137
+ "inputs": [],
138
+ "name": "PROJECTS",
139
+ "outputs": [
140
+ {
141
+ "internalType": "contract IJBProjects",
142
+ "name": "",
143
+ "type": "address"
144
+ }
145
+ ],
146
+ "stateMutability": "view",
147
+ "type": "function"
148
+ },
149
+ {
150
+ "inputs": [],
151
+ "name": "PUBLISHER",
152
+ "outputs": [
153
+ {
154
+ "internalType": "contract CTPublisher",
155
+ "name": "",
156
+ "type": "address"
157
+ }
158
+ ],
159
+ "stateMutability": "view",
160
+ "type": "function"
161
+ },
162
+ {
163
+ "inputs": [],
164
+ "name": "SUCKER_REGISTRY",
165
+ "outputs": [
166
+ {
167
+ "internalType": "contract IJBSuckerRegistry",
168
+ "name": "",
169
+ "type": "address"
170
+ }
171
+ ],
172
+ "stateMutability": "view",
173
+ "type": "function"
174
+ },
175
+ {
176
+ "inputs": [
177
+ {
178
+ "components": [
179
+ {
180
+ "internalType": "address",
181
+ "name": "holder",
182
+ "type": "address"
183
+ },
184
+ {
185
+ "internalType": "uint256",
186
+ "name": "projectId",
187
+ "type": "uint256"
188
+ },
189
+ {
190
+ "internalType": "uint256",
191
+ "name": "rulesetId",
192
+ "type": "uint256"
193
+ },
194
+ {
195
+ "internalType": "uint256",
196
+ "name": "cashOutCount",
197
+ "type": "uint256"
198
+ },
199
+ {
200
+ "components": [
201
+ {
202
+ "internalType": "address",
203
+ "name": "token",
204
+ "type": "address"
205
+ },
206
+ {
207
+ "internalType": "uint8",
208
+ "name": "decimals",
209
+ "type": "uint8"
210
+ },
211
+ {
212
+ "internalType": "uint32",
213
+ "name": "currency",
214
+ "type": "uint32"
215
+ },
216
+ {
217
+ "internalType": "uint256",
218
+ "name": "value",
219
+ "type": "uint256"
220
+ }
221
+ ],
222
+ "internalType": "struct JBTokenAmount",
223
+ "name": "reclaimedAmount",
224
+ "type": "tuple"
225
+ },
226
+ {
227
+ "components": [
228
+ {
229
+ "internalType": "address",
230
+ "name": "token",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "internalType": "uint8",
235
+ "name": "decimals",
236
+ "type": "uint8"
237
+ },
238
+ {
239
+ "internalType": "uint32",
240
+ "name": "currency",
241
+ "type": "uint32"
242
+ },
243
+ {
244
+ "internalType": "uint256",
245
+ "name": "value",
246
+ "type": "uint256"
247
+ }
248
+ ],
249
+ "internalType": "struct JBTokenAmount",
250
+ "name": "forwardedAmount",
251
+ "type": "tuple"
252
+ },
253
+ {
254
+ "internalType": "uint256",
255
+ "name": "cashOutTaxRate",
256
+ "type": "uint256"
257
+ },
258
+ {
259
+ "internalType": "address payable",
260
+ "name": "beneficiary",
261
+ "type": "address"
262
+ },
263
+ {
264
+ "internalType": "bytes",
265
+ "name": "hookMetadata",
266
+ "type": "bytes"
267
+ },
268
+ {
269
+ "internalType": "bytes",
270
+ "name": "cashOutMetadata",
271
+ "type": "bytes"
272
+ }
273
+ ],
274
+ "internalType": "struct JBAfterCashOutRecordedContext",
275
+ "name": "context",
276
+ "type": "tuple"
277
+ }
278
+ ],
279
+ "name": "afterCashOutRecordedWith",
280
+ "outputs": [],
281
+ "stateMutability": "payable",
282
+ "type": "function"
283
+ },
284
+ {
285
+ "inputs": [
286
+ {
287
+ "internalType": "uint256",
288
+ "name": "revnetId",
289
+ "type": "uint256"
290
+ },
291
+ {
292
+ "internalType": "uint256",
293
+ "name": "stageId",
294
+ "type": "uint256"
295
+ },
296
+ {
297
+ "internalType": "address",
298
+ "name": "beneficiary",
299
+ "type": "address"
300
+ }
301
+ ],
302
+ "name": "amountToAutoIssue",
303
+ "outputs": [
304
+ {
305
+ "internalType": "uint256",
306
+ "name": "",
307
+ "type": "uint256"
308
+ }
309
+ ],
310
+ "stateMutability": "view",
311
+ "type": "function"
312
+ },
313
+ {
314
+ "inputs": [
315
+ {
316
+ "internalType": "uint256",
317
+ "name": "revnetId",
318
+ "type": "uint256"
319
+ },
320
+ {
321
+ "internalType": "uint256",
322
+ "name": "stageId",
323
+ "type": "uint256"
324
+ },
325
+ {
326
+ "internalType": "address",
327
+ "name": "beneficiary",
328
+ "type": "address"
329
+ }
330
+ ],
331
+ "name": "autoIssueFor",
332
+ "outputs": [],
333
+ "stateMutability": "nonpayable",
334
+ "type": "function"
335
+ },
336
+ {
337
+ "inputs": [
338
+ {
339
+ "components": [
340
+ {
341
+ "internalType": "address",
342
+ "name": "terminal",
343
+ "type": "address"
344
+ },
345
+ {
346
+ "internalType": "address",
347
+ "name": "holder",
348
+ "type": "address"
349
+ },
350
+ {
351
+ "internalType": "uint256",
352
+ "name": "projectId",
353
+ "type": "uint256"
354
+ },
355
+ {
356
+ "internalType": "uint256",
357
+ "name": "rulesetId",
358
+ "type": "uint256"
359
+ },
360
+ {
361
+ "internalType": "uint256",
362
+ "name": "cashOutCount",
363
+ "type": "uint256"
364
+ },
365
+ {
366
+ "internalType": "uint256",
367
+ "name": "totalSupply",
368
+ "type": "uint256"
369
+ },
370
+ {
371
+ "components": [
372
+ {
373
+ "internalType": "address",
374
+ "name": "token",
375
+ "type": "address"
376
+ },
377
+ {
378
+ "internalType": "uint8",
379
+ "name": "decimals",
380
+ "type": "uint8"
381
+ },
382
+ {
383
+ "internalType": "uint32",
384
+ "name": "currency",
385
+ "type": "uint32"
386
+ },
387
+ {
388
+ "internalType": "uint256",
389
+ "name": "value",
390
+ "type": "uint256"
391
+ }
392
+ ],
393
+ "internalType": "struct JBTokenAmount",
394
+ "name": "surplus",
395
+ "type": "tuple"
396
+ },
397
+ {
398
+ "internalType": "bool",
399
+ "name": "useTotalSurplus",
400
+ "type": "bool"
401
+ },
402
+ {
403
+ "internalType": "uint256",
404
+ "name": "cashOutTaxRate",
405
+ "type": "uint256"
406
+ },
407
+ {
408
+ "internalType": "bytes",
409
+ "name": "metadata",
410
+ "type": "bytes"
411
+ }
412
+ ],
413
+ "internalType": "struct JBBeforeCashOutRecordedContext",
414
+ "name": "context",
415
+ "type": "tuple"
416
+ }
417
+ ],
418
+ "name": "beforeCashOutRecordedWith",
419
+ "outputs": [
420
+ {
421
+ "internalType": "uint256",
422
+ "name": "cashOutTaxRate",
423
+ "type": "uint256"
424
+ },
425
+ {
426
+ "internalType": "uint256",
427
+ "name": "cashOutCount",
428
+ "type": "uint256"
429
+ },
430
+ {
431
+ "internalType": "uint256",
432
+ "name": "totalSupply",
433
+ "type": "uint256"
434
+ },
435
+ {
436
+ "components": [
437
+ {
438
+ "internalType": "contract IJBCashOutHook",
439
+ "name": "hook",
440
+ "type": "address"
441
+ },
442
+ {
443
+ "internalType": "uint256",
444
+ "name": "amount",
445
+ "type": "uint256"
446
+ },
447
+ {
448
+ "internalType": "bytes",
449
+ "name": "metadata",
450
+ "type": "bytes"
451
+ }
452
+ ],
453
+ "internalType": "struct JBCashOutHookSpecification[]",
454
+ "name": "hookSpecifications",
455
+ "type": "tuple[]"
456
+ }
457
+ ],
458
+ "stateMutability": "view",
459
+ "type": "function"
460
+ },
461
+ {
462
+ "inputs": [
463
+ {
464
+ "components": [
465
+ {
466
+ "internalType": "address",
467
+ "name": "terminal",
468
+ "type": "address"
469
+ },
470
+ {
471
+ "internalType": "address",
472
+ "name": "payer",
473
+ "type": "address"
474
+ },
475
+ {
476
+ "components": [
477
+ {
478
+ "internalType": "address",
479
+ "name": "token",
480
+ "type": "address"
481
+ },
482
+ {
483
+ "internalType": "uint8",
484
+ "name": "decimals",
485
+ "type": "uint8"
486
+ },
487
+ {
488
+ "internalType": "uint32",
489
+ "name": "currency",
490
+ "type": "uint32"
491
+ },
492
+ {
493
+ "internalType": "uint256",
494
+ "name": "value",
495
+ "type": "uint256"
496
+ }
497
+ ],
498
+ "internalType": "struct JBTokenAmount",
499
+ "name": "amount",
500
+ "type": "tuple"
501
+ },
502
+ {
503
+ "internalType": "uint256",
504
+ "name": "projectId",
505
+ "type": "uint256"
506
+ },
507
+ {
508
+ "internalType": "uint256",
509
+ "name": "rulesetId",
510
+ "type": "uint256"
511
+ },
512
+ {
513
+ "internalType": "address",
514
+ "name": "beneficiary",
515
+ "type": "address"
516
+ },
517
+ {
518
+ "internalType": "uint256",
519
+ "name": "weight",
520
+ "type": "uint256"
521
+ },
522
+ {
523
+ "internalType": "uint256",
524
+ "name": "reservedPercent",
525
+ "type": "uint256"
526
+ },
527
+ {
528
+ "internalType": "bytes",
529
+ "name": "metadata",
530
+ "type": "bytes"
531
+ }
532
+ ],
533
+ "internalType": "struct JBBeforePayRecordedContext",
534
+ "name": "context",
535
+ "type": "tuple"
536
+ }
537
+ ],
538
+ "name": "beforePayRecordedWith",
539
+ "outputs": [
540
+ {
541
+ "internalType": "uint256",
542
+ "name": "weight",
543
+ "type": "uint256"
544
+ },
545
+ {
546
+ "components": [
547
+ {
548
+ "internalType": "contract IJBPayHook",
549
+ "name": "hook",
550
+ "type": "address"
551
+ },
552
+ {
553
+ "internalType": "uint256",
554
+ "name": "amount",
555
+ "type": "uint256"
556
+ },
557
+ {
558
+ "internalType": "bytes",
559
+ "name": "metadata",
560
+ "type": "bytes"
561
+ }
562
+ ],
563
+ "internalType": "struct JBPayHookSpecification[]",
564
+ "name": "hookSpecifications",
565
+ "type": "tuple[]"
566
+ }
567
+ ],
568
+ "stateMutability": "view",
569
+ "type": "function"
570
+ },
571
+ {
572
+ "inputs": [
573
+ {
574
+ "internalType": "uint256",
575
+ "name": "revnetId",
576
+ "type": "uint256"
577
+ }
578
+ ],
579
+ "name": "buybackHookOf",
580
+ "outputs": [
581
+ {
582
+ "internalType": "contract IJBRulesetDataHook",
583
+ "name": "buybackHook",
584
+ "type": "address"
585
+ }
586
+ ],
587
+ "stateMutability": "view",
588
+ "type": "function"
589
+ },
590
+ {
591
+ "inputs": [
592
+ {
593
+ "internalType": "uint256",
594
+ "name": "revnetId",
595
+ "type": "uint256"
596
+ }
597
+ ],
598
+ "name": "cashOutDelayOf",
599
+ "outputs": [
600
+ {
601
+ "internalType": "uint256",
602
+ "name": "cashOutDelay",
603
+ "type": "uint256"
604
+ }
605
+ ],
606
+ "stateMutability": "view",
607
+ "type": "function"
608
+ },
609
+ {
610
+ "inputs": [
611
+ {
612
+ "internalType": "uint256",
613
+ "name": "revnetId",
614
+ "type": "uint256"
615
+ },
616
+ {
617
+ "components": [
618
+ {
619
+ "components": [
620
+ {
621
+ "internalType": "string",
622
+ "name": "name",
623
+ "type": "string"
624
+ },
625
+ {
626
+ "internalType": "string",
627
+ "name": "ticker",
628
+ "type": "string"
629
+ },
630
+ {
631
+ "internalType": "string",
632
+ "name": "uri",
633
+ "type": "string"
634
+ },
635
+ {
636
+ "internalType": "bytes32",
637
+ "name": "salt",
638
+ "type": "bytes32"
639
+ }
640
+ ],
641
+ "internalType": "struct REVDescription",
642
+ "name": "description",
643
+ "type": "tuple"
644
+ },
645
+ {
646
+ "internalType": "uint32",
647
+ "name": "baseCurrency",
648
+ "type": "uint32"
649
+ },
650
+ {
651
+ "internalType": "address",
652
+ "name": "splitOperator",
653
+ "type": "address"
654
+ },
655
+ {
656
+ "components": [
657
+ {
658
+ "internalType": "uint48",
659
+ "name": "startsAtOrAfter",
660
+ "type": "uint48"
661
+ },
662
+ {
663
+ "components": [
664
+ {
665
+ "internalType": "uint32",
666
+ "name": "chainId",
667
+ "type": "uint32"
668
+ },
669
+ {
670
+ "internalType": "uint104",
671
+ "name": "count",
672
+ "type": "uint104"
673
+ },
674
+ {
675
+ "internalType": "address",
676
+ "name": "beneficiary",
677
+ "type": "address"
678
+ }
679
+ ],
680
+ "internalType": "struct REVAutoIssuance[]",
681
+ "name": "autoIssuances",
682
+ "type": "tuple[]"
683
+ },
684
+ {
685
+ "internalType": "uint16",
686
+ "name": "splitPercent",
687
+ "type": "uint16"
688
+ },
689
+ {
690
+ "components": [
691
+ {
692
+ "internalType": "uint32",
693
+ "name": "percent",
694
+ "type": "uint32"
695
+ },
696
+ {
697
+ "internalType": "uint64",
698
+ "name": "projectId",
699
+ "type": "uint64"
700
+ },
701
+ {
702
+ "internalType": "address payable",
703
+ "name": "beneficiary",
704
+ "type": "address"
705
+ },
706
+ {
707
+ "internalType": "bool",
708
+ "name": "preferAddToBalance",
709
+ "type": "bool"
710
+ },
711
+ {
712
+ "internalType": "uint48",
713
+ "name": "lockedUntil",
714
+ "type": "uint48"
715
+ },
716
+ {
717
+ "internalType": "contract IJBSplitHook",
718
+ "name": "hook",
719
+ "type": "address"
720
+ }
721
+ ],
722
+ "internalType": "struct JBSplit[]",
723
+ "name": "splits",
724
+ "type": "tuple[]"
725
+ },
726
+ {
727
+ "internalType": "uint112",
728
+ "name": "initialIssuance",
729
+ "type": "uint112"
730
+ },
731
+ {
732
+ "internalType": "uint32",
733
+ "name": "issuanceCutFrequency",
734
+ "type": "uint32"
735
+ },
736
+ {
737
+ "internalType": "uint32",
738
+ "name": "issuanceCutPercent",
739
+ "type": "uint32"
740
+ },
741
+ {
742
+ "internalType": "uint16",
743
+ "name": "cashOutTaxRate",
744
+ "type": "uint16"
745
+ },
746
+ {
747
+ "internalType": "uint16",
748
+ "name": "extraMetadata",
749
+ "type": "uint16"
750
+ }
751
+ ],
752
+ "internalType": "struct REVStageConfig[]",
753
+ "name": "stageConfigurations",
754
+ "type": "tuple[]"
755
+ },
756
+ {
757
+ "components": [
758
+ {
759
+ "internalType": "address",
760
+ "name": "token",
761
+ "type": "address"
762
+ },
763
+ {
764
+ "internalType": "contract IJBPayoutTerminal",
765
+ "name": "terminal",
766
+ "type": "address"
767
+ }
768
+ ],
769
+ "internalType": "struct REVLoanSource[]",
770
+ "name": "loanSources",
771
+ "type": "tuple[]"
772
+ },
773
+ {
774
+ "internalType": "address",
775
+ "name": "loans",
776
+ "type": "address"
777
+ }
778
+ ],
779
+ "internalType": "struct REVConfig",
780
+ "name": "configuration",
781
+ "type": "tuple"
782
+ },
783
+ {
784
+ "components": [
785
+ {
786
+ "internalType": "contract IJBTerminal",
787
+ "name": "terminal",
788
+ "type": "address"
789
+ },
790
+ {
791
+ "components": [
792
+ {
793
+ "internalType": "address",
794
+ "name": "token",
795
+ "type": "address"
796
+ },
797
+ {
798
+ "internalType": "uint8",
799
+ "name": "decimals",
800
+ "type": "uint8"
801
+ },
802
+ {
803
+ "internalType": "uint32",
804
+ "name": "currency",
805
+ "type": "uint32"
806
+ }
807
+ ],
808
+ "internalType": "struct JBAccountingContext[]",
809
+ "name": "accountingContextsToAccept",
810
+ "type": "tuple[]"
811
+ }
812
+ ],
813
+ "internalType": "struct JBTerminalConfig[]",
814
+ "name": "terminalConfigurations",
815
+ "type": "tuple[]"
816
+ },
817
+ {
818
+ "components": [
819
+ {
820
+ "internalType": "contract IJBRulesetDataHook",
821
+ "name": "dataHook",
822
+ "type": "address"
823
+ },
824
+ {
825
+ "internalType": "contract IJBBuybackHook",
826
+ "name": "hookToConfigure",
827
+ "type": "address"
828
+ },
829
+ {
830
+ "components": [
831
+ {
832
+ "internalType": "address",
833
+ "name": "token",
834
+ "type": "address"
835
+ },
836
+ {
837
+ "internalType": "uint24",
838
+ "name": "fee",
839
+ "type": "uint24"
840
+ },
841
+ {
842
+ "internalType": "uint32",
843
+ "name": "twapWindow",
844
+ "type": "uint32"
845
+ }
846
+ ],
847
+ "internalType": "struct REVBuybackPoolConfig[]",
848
+ "name": "poolConfigurations",
849
+ "type": "tuple[]"
850
+ }
851
+ ],
852
+ "internalType": "struct REVBuybackHookConfig",
853
+ "name": "buybackHookConfiguration",
854
+ "type": "tuple"
855
+ },
856
+ {
857
+ "components": [
858
+ {
859
+ "components": [
860
+ {
861
+ "internalType": "contract IJBSuckerDeployer",
862
+ "name": "deployer",
863
+ "type": "address"
864
+ },
865
+ {
866
+ "components": [
867
+ {
868
+ "internalType": "address",
869
+ "name": "localToken",
870
+ "type": "address"
871
+ },
872
+ {
873
+ "internalType": "uint32",
874
+ "name": "minGas",
875
+ "type": "uint32"
876
+ },
877
+ {
878
+ "internalType": "address",
879
+ "name": "remoteToken",
880
+ "type": "address"
881
+ },
882
+ {
883
+ "internalType": "uint256",
884
+ "name": "minBridgeAmount",
885
+ "type": "uint256"
886
+ }
887
+ ],
888
+ "internalType": "struct JBTokenMapping[]",
889
+ "name": "mappings",
890
+ "type": "tuple[]"
891
+ }
892
+ ],
893
+ "internalType": "struct JBSuckerDeployerConfig[]",
894
+ "name": "deployerConfigurations",
895
+ "type": "tuple[]"
896
+ },
897
+ {
898
+ "internalType": "bytes32",
899
+ "name": "salt",
900
+ "type": "bytes32"
901
+ }
902
+ ],
903
+ "internalType": "struct REVSuckerDeploymentConfig",
904
+ "name": "suckerDeploymentConfiguration",
905
+ "type": "tuple"
906
+ }
907
+ ],
908
+ "name": "deployFor",
909
+ "outputs": [
910
+ {
911
+ "internalType": "uint256",
912
+ "name": "",
913
+ "type": "uint256"
914
+ }
915
+ ],
916
+ "stateMutability": "nonpayable",
917
+ "type": "function"
918
+ },
919
+ {
920
+ "inputs": [
921
+ {
922
+ "internalType": "uint256",
923
+ "name": "revnetId",
924
+ "type": "uint256"
925
+ },
926
+ {
927
+ "components": [
928
+ {
929
+ "components": [
930
+ {
931
+ "internalType": "contract IJBSuckerDeployer",
932
+ "name": "deployer",
933
+ "type": "address"
934
+ },
935
+ {
936
+ "components": [
937
+ {
938
+ "internalType": "address",
939
+ "name": "localToken",
940
+ "type": "address"
941
+ },
942
+ {
943
+ "internalType": "uint32",
944
+ "name": "minGas",
945
+ "type": "uint32"
946
+ },
947
+ {
948
+ "internalType": "address",
949
+ "name": "remoteToken",
950
+ "type": "address"
951
+ },
952
+ {
953
+ "internalType": "uint256",
954
+ "name": "minBridgeAmount",
955
+ "type": "uint256"
956
+ }
957
+ ],
958
+ "internalType": "struct JBTokenMapping[]",
959
+ "name": "mappings",
960
+ "type": "tuple[]"
961
+ }
962
+ ],
963
+ "internalType": "struct JBSuckerDeployerConfig[]",
964
+ "name": "deployerConfigurations",
965
+ "type": "tuple[]"
966
+ },
967
+ {
968
+ "internalType": "bytes32",
969
+ "name": "salt",
970
+ "type": "bytes32"
971
+ }
972
+ ],
973
+ "internalType": "struct REVSuckerDeploymentConfig",
974
+ "name": "suckerDeploymentConfiguration",
975
+ "type": "tuple"
976
+ }
977
+ ],
978
+ "name": "deploySuckersFor",
979
+ "outputs": [
980
+ {
981
+ "internalType": "address[]",
982
+ "name": "suckers",
983
+ "type": "address[]"
984
+ }
985
+ ],
986
+ "stateMutability": "nonpayable",
987
+ "type": "function"
988
+ },
989
+ {
990
+ "inputs": [
991
+ {
992
+ "internalType": "uint256",
993
+ "name": "revnetId",
994
+ "type": "uint256"
995
+ },
996
+ {
997
+ "components": [
998
+ {
999
+ "components": [
1000
+ {
1001
+ "internalType": "string",
1002
+ "name": "name",
1003
+ "type": "string"
1004
+ },
1005
+ {
1006
+ "internalType": "string",
1007
+ "name": "ticker",
1008
+ "type": "string"
1009
+ },
1010
+ {
1011
+ "internalType": "string",
1012
+ "name": "uri",
1013
+ "type": "string"
1014
+ },
1015
+ {
1016
+ "internalType": "bytes32",
1017
+ "name": "salt",
1018
+ "type": "bytes32"
1019
+ }
1020
+ ],
1021
+ "internalType": "struct REVDescription",
1022
+ "name": "description",
1023
+ "type": "tuple"
1024
+ },
1025
+ {
1026
+ "internalType": "uint32",
1027
+ "name": "baseCurrency",
1028
+ "type": "uint32"
1029
+ },
1030
+ {
1031
+ "internalType": "address",
1032
+ "name": "splitOperator",
1033
+ "type": "address"
1034
+ },
1035
+ {
1036
+ "components": [
1037
+ {
1038
+ "internalType": "uint48",
1039
+ "name": "startsAtOrAfter",
1040
+ "type": "uint48"
1041
+ },
1042
+ {
1043
+ "components": [
1044
+ {
1045
+ "internalType": "uint32",
1046
+ "name": "chainId",
1047
+ "type": "uint32"
1048
+ },
1049
+ {
1050
+ "internalType": "uint104",
1051
+ "name": "count",
1052
+ "type": "uint104"
1053
+ },
1054
+ {
1055
+ "internalType": "address",
1056
+ "name": "beneficiary",
1057
+ "type": "address"
1058
+ }
1059
+ ],
1060
+ "internalType": "struct REVAutoIssuance[]",
1061
+ "name": "autoIssuances",
1062
+ "type": "tuple[]"
1063
+ },
1064
+ {
1065
+ "internalType": "uint16",
1066
+ "name": "splitPercent",
1067
+ "type": "uint16"
1068
+ },
1069
+ {
1070
+ "components": [
1071
+ {
1072
+ "internalType": "uint32",
1073
+ "name": "percent",
1074
+ "type": "uint32"
1075
+ },
1076
+ {
1077
+ "internalType": "uint64",
1078
+ "name": "projectId",
1079
+ "type": "uint64"
1080
+ },
1081
+ {
1082
+ "internalType": "address payable",
1083
+ "name": "beneficiary",
1084
+ "type": "address"
1085
+ },
1086
+ {
1087
+ "internalType": "bool",
1088
+ "name": "preferAddToBalance",
1089
+ "type": "bool"
1090
+ },
1091
+ {
1092
+ "internalType": "uint48",
1093
+ "name": "lockedUntil",
1094
+ "type": "uint48"
1095
+ },
1096
+ {
1097
+ "internalType": "contract IJBSplitHook",
1098
+ "name": "hook",
1099
+ "type": "address"
1100
+ }
1101
+ ],
1102
+ "internalType": "struct JBSplit[]",
1103
+ "name": "splits",
1104
+ "type": "tuple[]"
1105
+ },
1106
+ {
1107
+ "internalType": "uint112",
1108
+ "name": "initialIssuance",
1109
+ "type": "uint112"
1110
+ },
1111
+ {
1112
+ "internalType": "uint32",
1113
+ "name": "issuanceCutFrequency",
1114
+ "type": "uint32"
1115
+ },
1116
+ {
1117
+ "internalType": "uint32",
1118
+ "name": "issuanceCutPercent",
1119
+ "type": "uint32"
1120
+ },
1121
+ {
1122
+ "internalType": "uint16",
1123
+ "name": "cashOutTaxRate",
1124
+ "type": "uint16"
1125
+ },
1126
+ {
1127
+ "internalType": "uint16",
1128
+ "name": "extraMetadata",
1129
+ "type": "uint16"
1130
+ }
1131
+ ],
1132
+ "internalType": "struct REVStageConfig[]",
1133
+ "name": "stageConfigurations",
1134
+ "type": "tuple[]"
1135
+ },
1136
+ {
1137
+ "components": [
1138
+ {
1139
+ "internalType": "address",
1140
+ "name": "token",
1141
+ "type": "address"
1142
+ },
1143
+ {
1144
+ "internalType": "contract IJBPayoutTerminal",
1145
+ "name": "terminal",
1146
+ "type": "address"
1147
+ }
1148
+ ],
1149
+ "internalType": "struct REVLoanSource[]",
1150
+ "name": "loanSources",
1151
+ "type": "tuple[]"
1152
+ },
1153
+ {
1154
+ "internalType": "address",
1155
+ "name": "loans",
1156
+ "type": "address"
1157
+ }
1158
+ ],
1159
+ "internalType": "struct REVConfig",
1160
+ "name": "configuration",
1161
+ "type": "tuple"
1162
+ },
1163
+ {
1164
+ "components": [
1165
+ {
1166
+ "internalType": "contract IJBTerminal",
1167
+ "name": "terminal",
1168
+ "type": "address"
1169
+ },
1170
+ {
1171
+ "components": [
1172
+ {
1173
+ "internalType": "address",
1174
+ "name": "token",
1175
+ "type": "address"
1176
+ },
1177
+ {
1178
+ "internalType": "uint8",
1179
+ "name": "decimals",
1180
+ "type": "uint8"
1181
+ },
1182
+ {
1183
+ "internalType": "uint32",
1184
+ "name": "currency",
1185
+ "type": "uint32"
1186
+ }
1187
+ ],
1188
+ "internalType": "struct JBAccountingContext[]",
1189
+ "name": "accountingContextsToAccept",
1190
+ "type": "tuple[]"
1191
+ }
1192
+ ],
1193
+ "internalType": "struct JBTerminalConfig[]",
1194
+ "name": "terminalConfigurations",
1195
+ "type": "tuple[]"
1196
+ },
1197
+ {
1198
+ "components": [
1199
+ {
1200
+ "internalType": "contract IJBRulesetDataHook",
1201
+ "name": "dataHook",
1202
+ "type": "address"
1203
+ },
1204
+ {
1205
+ "internalType": "contract IJBBuybackHook",
1206
+ "name": "hookToConfigure",
1207
+ "type": "address"
1208
+ },
1209
+ {
1210
+ "components": [
1211
+ {
1212
+ "internalType": "address",
1213
+ "name": "token",
1214
+ "type": "address"
1215
+ },
1216
+ {
1217
+ "internalType": "uint24",
1218
+ "name": "fee",
1219
+ "type": "uint24"
1220
+ },
1221
+ {
1222
+ "internalType": "uint32",
1223
+ "name": "twapWindow",
1224
+ "type": "uint32"
1225
+ }
1226
+ ],
1227
+ "internalType": "struct REVBuybackPoolConfig[]",
1228
+ "name": "poolConfigurations",
1229
+ "type": "tuple[]"
1230
+ }
1231
+ ],
1232
+ "internalType": "struct REVBuybackHookConfig",
1233
+ "name": "buybackHookConfiguration",
1234
+ "type": "tuple"
1235
+ },
1236
+ {
1237
+ "components": [
1238
+ {
1239
+ "components": [
1240
+ {
1241
+ "internalType": "contract IJBSuckerDeployer",
1242
+ "name": "deployer",
1243
+ "type": "address"
1244
+ },
1245
+ {
1246
+ "components": [
1247
+ {
1248
+ "internalType": "address",
1249
+ "name": "localToken",
1250
+ "type": "address"
1251
+ },
1252
+ {
1253
+ "internalType": "uint32",
1254
+ "name": "minGas",
1255
+ "type": "uint32"
1256
+ },
1257
+ {
1258
+ "internalType": "address",
1259
+ "name": "remoteToken",
1260
+ "type": "address"
1261
+ },
1262
+ {
1263
+ "internalType": "uint256",
1264
+ "name": "minBridgeAmount",
1265
+ "type": "uint256"
1266
+ }
1267
+ ],
1268
+ "internalType": "struct JBTokenMapping[]",
1269
+ "name": "mappings",
1270
+ "type": "tuple[]"
1271
+ }
1272
+ ],
1273
+ "internalType": "struct JBSuckerDeployerConfig[]",
1274
+ "name": "deployerConfigurations",
1275
+ "type": "tuple[]"
1276
+ },
1277
+ {
1278
+ "internalType": "bytes32",
1279
+ "name": "salt",
1280
+ "type": "bytes32"
1281
+ }
1282
+ ],
1283
+ "internalType": "struct REVSuckerDeploymentConfig",
1284
+ "name": "suckerDeploymentConfiguration",
1285
+ "type": "tuple"
1286
+ },
1287
+ {
1288
+ "components": [
1289
+ {
1290
+ "components": [
1291
+ {
1292
+ "internalType": "string",
1293
+ "name": "name",
1294
+ "type": "string"
1295
+ },
1296
+ {
1297
+ "internalType": "string",
1298
+ "name": "symbol",
1299
+ "type": "string"
1300
+ },
1301
+ {
1302
+ "internalType": "string",
1303
+ "name": "baseUri",
1304
+ "type": "string"
1305
+ },
1306
+ {
1307
+ "internalType": "contract IJB721TokenUriResolver",
1308
+ "name": "tokenUriResolver",
1309
+ "type": "address"
1310
+ },
1311
+ {
1312
+ "internalType": "string",
1313
+ "name": "contractUri",
1314
+ "type": "string"
1315
+ },
1316
+ {
1317
+ "components": [
1318
+ {
1319
+ "components": [
1320
+ {
1321
+ "internalType": "uint104",
1322
+ "name": "price",
1323
+ "type": "uint104"
1324
+ },
1325
+ {
1326
+ "internalType": "uint32",
1327
+ "name": "initialSupply",
1328
+ "type": "uint32"
1329
+ },
1330
+ {
1331
+ "internalType": "uint32",
1332
+ "name": "votingUnits",
1333
+ "type": "uint32"
1334
+ },
1335
+ {
1336
+ "internalType": "uint16",
1337
+ "name": "reserveFrequency",
1338
+ "type": "uint16"
1339
+ },
1340
+ {
1341
+ "internalType": "address",
1342
+ "name": "reserveBeneficiary",
1343
+ "type": "address"
1344
+ },
1345
+ {
1346
+ "internalType": "bytes32",
1347
+ "name": "encodedIPFSUri",
1348
+ "type": "bytes32"
1349
+ },
1350
+ {
1351
+ "internalType": "uint24",
1352
+ "name": "category",
1353
+ "type": "uint24"
1354
+ },
1355
+ {
1356
+ "internalType": "uint8",
1357
+ "name": "discountPercent",
1358
+ "type": "uint8"
1359
+ },
1360
+ {
1361
+ "internalType": "bool",
1362
+ "name": "allowOwnerMint",
1363
+ "type": "bool"
1364
+ },
1365
+ {
1366
+ "internalType": "bool",
1367
+ "name": "useReserveBeneficiaryAsDefault",
1368
+ "type": "bool"
1369
+ },
1370
+ {
1371
+ "internalType": "bool",
1372
+ "name": "transfersPausable",
1373
+ "type": "bool"
1374
+ },
1375
+ {
1376
+ "internalType": "bool",
1377
+ "name": "useVotingUnits",
1378
+ "type": "bool"
1379
+ },
1380
+ {
1381
+ "internalType": "bool",
1382
+ "name": "cannotBeRemoved",
1383
+ "type": "bool"
1384
+ },
1385
+ {
1386
+ "internalType": "bool",
1387
+ "name": "cannotIncreaseDiscountPercent",
1388
+ "type": "bool"
1389
+ }
1390
+ ],
1391
+ "internalType": "struct JB721TierConfig[]",
1392
+ "name": "tiers",
1393
+ "type": "tuple[]"
1394
+ },
1395
+ {
1396
+ "internalType": "uint32",
1397
+ "name": "currency",
1398
+ "type": "uint32"
1399
+ },
1400
+ {
1401
+ "internalType": "uint8",
1402
+ "name": "decimals",
1403
+ "type": "uint8"
1404
+ },
1405
+ {
1406
+ "internalType": "contract IJBPrices",
1407
+ "name": "prices",
1408
+ "type": "address"
1409
+ }
1410
+ ],
1411
+ "internalType": "struct JB721InitTiersConfig",
1412
+ "name": "tiersConfig",
1413
+ "type": "tuple"
1414
+ },
1415
+ {
1416
+ "internalType": "address",
1417
+ "name": "reserveBeneficiary",
1418
+ "type": "address"
1419
+ },
1420
+ {
1421
+ "components": [
1422
+ {
1423
+ "internalType": "bool",
1424
+ "name": "noNewTiersWithReserves",
1425
+ "type": "bool"
1426
+ },
1427
+ {
1428
+ "internalType": "bool",
1429
+ "name": "noNewTiersWithVotes",
1430
+ "type": "bool"
1431
+ },
1432
+ {
1433
+ "internalType": "bool",
1434
+ "name": "noNewTiersWithOwnerMinting",
1435
+ "type": "bool"
1436
+ },
1437
+ {
1438
+ "internalType": "bool",
1439
+ "name": "preventOverspending",
1440
+ "type": "bool"
1441
+ }
1442
+ ],
1443
+ "internalType": "struct JB721TiersHookFlags",
1444
+ "name": "flags",
1445
+ "type": "tuple"
1446
+ }
1447
+ ],
1448
+ "internalType": "struct JBDeploy721TiersHookConfig",
1449
+ "name": "baseline721HookConfiguration",
1450
+ "type": "tuple"
1451
+ },
1452
+ {
1453
+ "internalType": "bytes32",
1454
+ "name": "salt",
1455
+ "type": "bytes32"
1456
+ },
1457
+ {
1458
+ "internalType": "bool",
1459
+ "name": "splitOperatorCanAdjustTiers",
1460
+ "type": "bool"
1461
+ },
1462
+ {
1463
+ "internalType": "bool",
1464
+ "name": "splitOperatorCanUpdateMetadata",
1465
+ "type": "bool"
1466
+ },
1467
+ {
1468
+ "internalType": "bool",
1469
+ "name": "splitOperatorCanMint",
1470
+ "type": "bool"
1471
+ },
1472
+ {
1473
+ "internalType": "bool",
1474
+ "name": "splitOperatorCanIncreaseDiscountPercent",
1475
+ "type": "bool"
1476
+ }
1477
+ ],
1478
+ "internalType": "struct REVDeploy721TiersHookConfig",
1479
+ "name": "tiered721HookConfiguration",
1480
+ "type": "tuple"
1481
+ },
1482
+ {
1483
+ "components": [
1484
+ {
1485
+ "internalType": "uint24",
1486
+ "name": "category",
1487
+ "type": "uint24"
1488
+ },
1489
+ {
1490
+ "internalType": "uint104",
1491
+ "name": "minimumPrice",
1492
+ "type": "uint104"
1493
+ },
1494
+ {
1495
+ "internalType": "uint32",
1496
+ "name": "minimumTotalSupply",
1497
+ "type": "uint32"
1498
+ },
1499
+ {
1500
+ "internalType": "uint32",
1501
+ "name": "maximumTotalSupply",
1502
+ "type": "uint32"
1503
+ },
1504
+ {
1505
+ "internalType": "address[]",
1506
+ "name": "allowedAddresses",
1507
+ "type": "address[]"
1508
+ }
1509
+ ],
1510
+ "internalType": "struct REVCroptopAllowedPost[]",
1511
+ "name": "allowedPosts",
1512
+ "type": "tuple[]"
1513
+ }
1514
+ ],
1515
+ "name": "deployWith721sFor",
1516
+ "outputs": [
1517
+ {
1518
+ "internalType": "uint256",
1519
+ "name": "",
1520
+ "type": "uint256"
1521
+ },
1522
+ {
1523
+ "internalType": "contract IJB721TiersHook",
1524
+ "name": "hook",
1525
+ "type": "address"
1526
+ }
1527
+ ],
1528
+ "stateMutability": "nonpayable",
1529
+ "type": "function"
1530
+ },
1531
+ {
1532
+ "inputs": [
1533
+ {
1534
+ "internalType": "uint256",
1535
+ "name": "revnetId",
1536
+ "type": "uint256"
1537
+ },
1538
+ {
1539
+ "components": [
1540
+ {
1541
+ "internalType": "uint48",
1542
+ "name": "cycleNumber",
1543
+ "type": "uint48"
1544
+ },
1545
+ {
1546
+ "internalType": "uint48",
1547
+ "name": "id",
1548
+ "type": "uint48"
1549
+ },
1550
+ {
1551
+ "internalType": "uint48",
1552
+ "name": "basedOnId",
1553
+ "type": "uint48"
1554
+ },
1555
+ {
1556
+ "internalType": "uint48",
1557
+ "name": "start",
1558
+ "type": "uint48"
1559
+ },
1560
+ {
1561
+ "internalType": "uint32",
1562
+ "name": "duration",
1563
+ "type": "uint32"
1564
+ },
1565
+ {
1566
+ "internalType": "uint112",
1567
+ "name": "weight",
1568
+ "type": "uint112"
1569
+ },
1570
+ {
1571
+ "internalType": "uint32",
1572
+ "name": "weightCutPercent",
1573
+ "type": "uint32"
1574
+ },
1575
+ {
1576
+ "internalType": "contract IJBRulesetApprovalHook",
1577
+ "name": "approvalHook",
1578
+ "type": "address"
1579
+ },
1580
+ {
1581
+ "internalType": "uint256",
1582
+ "name": "metadata",
1583
+ "type": "uint256"
1584
+ }
1585
+ ],
1586
+ "internalType": "struct JBRuleset",
1587
+ "name": "ruleset",
1588
+ "type": "tuple"
1589
+ },
1590
+ {
1591
+ "internalType": "address",
1592
+ "name": "addr",
1593
+ "type": "address"
1594
+ }
1595
+ ],
1596
+ "name": "hasMintPermissionFor",
1597
+ "outputs": [
1598
+ {
1599
+ "internalType": "bool",
1600
+ "name": "",
1601
+ "type": "bool"
1602
+ }
1603
+ ],
1604
+ "stateMutability": "view",
1605
+ "type": "function"
1606
+ },
1607
+ {
1608
+ "inputs": [
1609
+ {
1610
+ "internalType": "uint256",
1611
+ "name": "revnetId",
1612
+ "type": "uint256"
1613
+ }
1614
+ ],
1615
+ "name": "hashedEncodedConfigurationOf",
1616
+ "outputs": [
1617
+ {
1618
+ "internalType": "bytes32",
1619
+ "name": "hashedEncodedConfiguration",
1620
+ "type": "bytes32"
1621
+ }
1622
+ ],
1623
+ "stateMutability": "view",
1624
+ "type": "function"
1625
+ },
1626
+ {
1627
+ "inputs": [
1628
+ {
1629
+ "internalType": "uint256",
1630
+ "name": "revnetId",
1631
+ "type": "uint256"
1632
+ },
1633
+ {
1634
+ "internalType": "address",
1635
+ "name": "addr",
1636
+ "type": "address"
1637
+ }
1638
+ ],
1639
+ "name": "isSplitOperatorOf",
1640
+ "outputs": [
1641
+ {
1642
+ "internalType": "bool",
1643
+ "name": "",
1644
+ "type": "bool"
1645
+ }
1646
+ ],
1647
+ "stateMutability": "view",
1648
+ "type": "function"
1649
+ },
1650
+ {
1651
+ "inputs": [
1652
+ {
1653
+ "internalType": "address",
1654
+ "name": "forwarder",
1655
+ "type": "address"
1656
+ }
1657
+ ],
1658
+ "name": "isTrustedForwarder",
1659
+ "outputs": [
1660
+ {
1661
+ "internalType": "bool",
1662
+ "name": "",
1663
+ "type": "bool"
1664
+ }
1665
+ ],
1666
+ "stateMutability": "view",
1667
+ "type": "function"
1668
+ },
1669
+ {
1670
+ "inputs": [
1671
+ {
1672
+ "internalType": "uint256",
1673
+ "name": "revnetId",
1674
+ "type": "uint256"
1675
+ }
1676
+ ],
1677
+ "name": "loansOf",
1678
+ "outputs": [
1679
+ {
1680
+ "internalType": "address",
1681
+ "name": "",
1682
+ "type": "address"
1683
+ }
1684
+ ],
1685
+ "stateMutability": "view",
1686
+ "type": "function"
1687
+ },
1688
+ {
1689
+ "inputs": [
1690
+ {
1691
+ "internalType": "address",
1692
+ "name": "",
1693
+ "type": "address"
1694
+ },
1695
+ {
1696
+ "internalType": "address",
1697
+ "name": "",
1698
+ "type": "address"
1699
+ },
1700
+ {
1701
+ "internalType": "uint256",
1702
+ "name": "",
1703
+ "type": "uint256"
1704
+ },
1705
+ {
1706
+ "internalType": "bytes",
1707
+ "name": "",
1708
+ "type": "bytes"
1709
+ }
1710
+ ],
1711
+ "name": "onERC721Received",
1712
+ "outputs": [
1713
+ {
1714
+ "internalType": "bytes4",
1715
+ "name": "",
1716
+ "type": "bytes4"
1717
+ }
1718
+ ],
1719
+ "stateMutability": "view",
1720
+ "type": "function"
1721
+ },
1722
+ {
1723
+ "inputs": [
1724
+ {
1725
+ "internalType": "uint256",
1726
+ "name": "revnetId",
1727
+ "type": "uint256"
1728
+ },
1729
+ {
1730
+ "internalType": "address",
1731
+ "name": "newSplitOperator",
1732
+ "type": "address"
1733
+ }
1734
+ ],
1735
+ "name": "setSplitOperatorOf",
1736
+ "outputs": [],
1737
+ "stateMutability": "nonpayable",
1738
+ "type": "function"
1739
+ },
1740
+ {
1741
+ "inputs": [
1742
+ {
1743
+ "internalType": "bytes4",
1744
+ "name": "interfaceId",
1745
+ "type": "bytes4"
1746
+ }
1747
+ ],
1748
+ "name": "supportsInterface",
1749
+ "outputs": [
1750
+ {
1751
+ "internalType": "bool",
1752
+ "name": "",
1753
+ "type": "bool"
1754
+ }
1755
+ ],
1756
+ "stateMutability": "view",
1757
+ "type": "function"
1758
+ },
1759
+ {
1760
+ "inputs": [
1761
+ {
1762
+ "internalType": "uint256",
1763
+ "name": "revnetId",
1764
+ "type": "uint256"
1765
+ }
1766
+ ],
1767
+ "name": "tiered721HookOf",
1768
+ "outputs": [
1769
+ {
1770
+ "internalType": "contract IJB721TiersHook",
1771
+ "name": "tiered721Hook",
1772
+ "type": "address"
1773
+ }
1774
+ ],
1775
+ "stateMutability": "view",
1776
+ "type": "function"
1777
+ },
1778
+ {
1779
+ "inputs": [],
1780
+ "name": "trustedForwarder",
1781
+ "outputs": [
1782
+ {
1783
+ "internalType": "address",
1784
+ "name": "",
1785
+ "type": "address"
1786
+ }
1787
+ ],
1788
+ "stateMutability": "view",
1789
+ "type": "function"
1790
+ },
1791
+ {
1792
+ "anonymous": false,
1793
+ "inputs": [
1794
+ {
1795
+ "indexed": true,
1796
+ "internalType": "uint256",
1797
+ "name": "revnetId",
1798
+ "type": "uint256"
1799
+ },
1800
+ {
1801
+ "indexed": true,
1802
+ "internalType": "uint256",
1803
+ "name": "stageId",
1804
+ "type": "uint256"
1805
+ },
1806
+ {
1807
+ "indexed": true,
1808
+ "internalType": "address",
1809
+ "name": "beneficiary",
1810
+ "type": "address"
1811
+ },
1812
+ {
1813
+ "indexed": false,
1814
+ "internalType": "uint256",
1815
+ "name": "count",
1816
+ "type": "uint256"
1817
+ },
1818
+ {
1819
+ "indexed": false,
1820
+ "internalType": "address",
1821
+ "name": "caller",
1822
+ "type": "address"
1823
+ }
1824
+ ],
1825
+ "name": "AutoIssue",
1826
+ "type": "event"
1827
+ },
1828
+ {
1829
+ "anonymous": false,
1830
+ "inputs": [
1831
+ {
1832
+ "indexed": true,
1833
+ "internalType": "uint256",
1834
+ "name": "revnetId",
1835
+ "type": "uint256"
1836
+ },
1837
+ {
1838
+ "components": [
1839
+ {
1840
+ "components": [
1841
+ {
1842
+ "internalType": "string",
1843
+ "name": "name",
1844
+ "type": "string"
1845
+ },
1846
+ {
1847
+ "internalType": "string",
1848
+ "name": "ticker",
1849
+ "type": "string"
1850
+ },
1851
+ {
1852
+ "internalType": "string",
1853
+ "name": "uri",
1854
+ "type": "string"
1855
+ },
1856
+ {
1857
+ "internalType": "bytes32",
1858
+ "name": "salt",
1859
+ "type": "bytes32"
1860
+ }
1861
+ ],
1862
+ "internalType": "struct REVDescription",
1863
+ "name": "description",
1864
+ "type": "tuple"
1865
+ },
1866
+ {
1867
+ "internalType": "uint32",
1868
+ "name": "baseCurrency",
1869
+ "type": "uint32"
1870
+ },
1871
+ {
1872
+ "internalType": "address",
1873
+ "name": "splitOperator",
1874
+ "type": "address"
1875
+ },
1876
+ {
1877
+ "components": [
1878
+ {
1879
+ "internalType": "uint48",
1880
+ "name": "startsAtOrAfter",
1881
+ "type": "uint48"
1882
+ },
1883
+ {
1884
+ "components": [
1885
+ {
1886
+ "internalType": "uint32",
1887
+ "name": "chainId",
1888
+ "type": "uint32"
1889
+ },
1890
+ {
1891
+ "internalType": "uint104",
1892
+ "name": "count",
1893
+ "type": "uint104"
1894
+ },
1895
+ {
1896
+ "internalType": "address",
1897
+ "name": "beneficiary",
1898
+ "type": "address"
1899
+ }
1900
+ ],
1901
+ "internalType": "struct REVAutoIssuance[]",
1902
+ "name": "autoIssuances",
1903
+ "type": "tuple[]"
1904
+ },
1905
+ {
1906
+ "internalType": "uint16",
1907
+ "name": "splitPercent",
1908
+ "type": "uint16"
1909
+ },
1910
+ {
1911
+ "components": [
1912
+ {
1913
+ "internalType": "uint32",
1914
+ "name": "percent",
1915
+ "type": "uint32"
1916
+ },
1917
+ {
1918
+ "internalType": "uint64",
1919
+ "name": "projectId",
1920
+ "type": "uint64"
1921
+ },
1922
+ {
1923
+ "internalType": "address payable",
1924
+ "name": "beneficiary",
1925
+ "type": "address"
1926
+ },
1927
+ {
1928
+ "internalType": "bool",
1929
+ "name": "preferAddToBalance",
1930
+ "type": "bool"
1931
+ },
1932
+ {
1933
+ "internalType": "uint48",
1934
+ "name": "lockedUntil",
1935
+ "type": "uint48"
1936
+ },
1937
+ {
1938
+ "internalType": "contract IJBSplitHook",
1939
+ "name": "hook",
1940
+ "type": "address"
1941
+ }
1942
+ ],
1943
+ "internalType": "struct JBSplit[]",
1944
+ "name": "splits",
1945
+ "type": "tuple[]"
1946
+ },
1947
+ {
1948
+ "internalType": "uint112",
1949
+ "name": "initialIssuance",
1950
+ "type": "uint112"
1951
+ },
1952
+ {
1953
+ "internalType": "uint32",
1954
+ "name": "issuanceCutFrequency",
1955
+ "type": "uint32"
1956
+ },
1957
+ {
1958
+ "internalType": "uint32",
1959
+ "name": "issuanceCutPercent",
1960
+ "type": "uint32"
1961
+ },
1962
+ {
1963
+ "internalType": "uint16",
1964
+ "name": "cashOutTaxRate",
1965
+ "type": "uint16"
1966
+ },
1967
+ {
1968
+ "internalType": "uint16",
1969
+ "name": "extraMetadata",
1970
+ "type": "uint16"
1971
+ }
1972
+ ],
1973
+ "internalType": "struct REVStageConfig[]",
1974
+ "name": "stageConfigurations",
1975
+ "type": "tuple[]"
1976
+ },
1977
+ {
1978
+ "components": [
1979
+ {
1980
+ "internalType": "address",
1981
+ "name": "token",
1982
+ "type": "address"
1983
+ },
1984
+ {
1985
+ "internalType": "contract IJBPayoutTerminal",
1986
+ "name": "terminal",
1987
+ "type": "address"
1988
+ }
1989
+ ],
1990
+ "internalType": "struct REVLoanSource[]",
1991
+ "name": "loanSources",
1992
+ "type": "tuple[]"
1993
+ },
1994
+ {
1995
+ "internalType": "address",
1996
+ "name": "loans",
1997
+ "type": "address"
1998
+ }
1999
+ ],
2000
+ "indexed": false,
2001
+ "internalType": "struct REVConfig",
2002
+ "name": "configuration",
2003
+ "type": "tuple"
2004
+ },
2005
+ {
2006
+ "components": [
2007
+ {
2008
+ "internalType": "contract IJBTerminal",
2009
+ "name": "terminal",
2010
+ "type": "address"
2011
+ },
2012
+ {
2013
+ "components": [
2014
+ {
2015
+ "internalType": "address",
2016
+ "name": "token",
2017
+ "type": "address"
2018
+ },
2019
+ {
2020
+ "internalType": "uint8",
2021
+ "name": "decimals",
2022
+ "type": "uint8"
2023
+ },
2024
+ {
2025
+ "internalType": "uint32",
2026
+ "name": "currency",
2027
+ "type": "uint32"
2028
+ }
2029
+ ],
2030
+ "internalType": "struct JBAccountingContext[]",
2031
+ "name": "accountingContextsToAccept",
2032
+ "type": "tuple[]"
2033
+ }
2034
+ ],
2035
+ "indexed": false,
2036
+ "internalType": "struct JBTerminalConfig[]",
2037
+ "name": "terminalConfigurations",
2038
+ "type": "tuple[]"
2039
+ },
2040
+ {
2041
+ "components": [
2042
+ {
2043
+ "internalType": "contract IJBRulesetDataHook",
2044
+ "name": "dataHook",
2045
+ "type": "address"
2046
+ },
2047
+ {
2048
+ "internalType": "contract IJBBuybackHook",
2049
+ "name": "hookToConfigure",
2050
+ "type": "address"
2051
+ },
2052
+ {
2053
+ "components": [
2054
+ {
2055
+ "internalType": "address",
2056
+ "name": "token",
2057
+ "type": "address"
2058
+ },
2059
+ {
2060
+ "internalType": "uint24",
2061
+ "name": "fee",
2062
+ "type": "uint24"
2063
+ },
2064
+ {
2065
+ "internalType": "uint32",
2066
+ "name": "twapWindow",
2067
+ "type": "uint32"
2068
+ }
2069
+ ],
2070
+ "internalType": "struct REVBuybackPoolConfig[]",
2071
+ "name": "poolConfigurations",
2072
+ "type": "tuple[]"
2073
+ }
2074
+ ],
2075
+ "indexed": false,
2076
+ "internalType": "struct REVBuybackHookConfig",
2077
+ "name": "buybackHookConfiguration",
2078
+ "type": "tuple"
2079
+ },
2080
+ {
2081
+ "components": [
2082
+ {
2083
+ "components": [
2084
+ {
2085
+ "internalType": "contract IJBSuckerDeployer",
2086
+ "name": "deployer",
2087
+ "type": "address"
2088
+ },
2089
+ {
2090
+ "components": [
2091
+ {
2092
+ "internalType": "address",
2093
+ "name": "localToken",
2094
+ "type": "address"
2095
+ },
2096
+ {
2097
+ "internalType": "uint32",
2098
+ "name": "minGas",
2099
+ "type": "uint32"
2100
+ },
2101
+ {
2102
+ "internalType": "address",
2103
+ "name": "remoteToken",
2104
+ "type": "address"
2105
+ },
2106
+ {
2107
+ "internalType": "uint256",
2108
+ "name": "minBridgeAmount",
2109
+ "type": "uint256"
2110
+ }
2111
+ ],
2112
+ "internalType": "struct JBTokenMapping[]",
2113
+ "name": "mappings",
2114
+ "type": "tuple[]"
2115
+ }
2116
+ ],
2117
+ "internalType": "struct JBSuckerDeployerConfig[]",
2118
+ "name": "deployerConfigurations",
2119
+ "type": "tuple[]"
2120
+ },
2121
+ {
2122
+ "internalType": "bytes32",
2123
+ "name": "salt",
2124
+ "type": "bytes32"
2125
+ }
2126
+ ],
2127
+ "indexed": false,
2128
+ "internalType": "struct REVSuckerDeploymentConfig",
2129
+ "name": "suckerDeploymentConfiguration",
2130
+ "type": "tuple"
2131
+ },
2132
+ {
2133
+ "components": [
2134
+ {
2135
+ "internalType": "uint48",
2136
+ "name": "mustStartAtOrAfter",
2137
+ "type": "uint48"
2138
+ },
2139
+ {
2140
+ "internalType": "uint32",
2141
+ "name": "duration",
2142
+ "type": "uint32"
2143
+ },
2144
+ {
2145
+ "internalType": "uint112",
2146
+ "name": "weight",
2147
+ "type": "uint112"
2148
+ },
2149
+ {
2150
+ "internalType": "uint32",
2151
+ "name": "weightCutPercent",
2152
+ "type": "uint32"
2153
+ },
2154
+ {
2155
+ "internalType": "contract IJBRulesetApprovalHook",
2156
+ "name": "approvalHook",
2157
+ "type": "address"
2158
+ },
2159
+ {
2160
+ "components": [
2161
+ {
2162
+ "internalType": "uint16",
2163
+ "name": "reservedPercent",
2164
+ "type": "uint16"
2165
+ },
2166
+ {
2167
+ "internalType": "uint16",
2168
+ "name": "cashOutTaxRate",
2169
+ "type": "uint16"
2170
+ },
2171
+ {
2172
+ "internalType": "uint32",
2173
+ "name": "baseCurrency",
2174
+ "type": "uint32"
2175
+ },
2176
+ {
2177
+ "internalType": "bool",
2178
+ "name": "pausePay",
2179
+ "type": "bool"
2180
+ },
2181
+ {
2182
+ "internalType": "bool",
2183
+ "name": "pauseCreditTransfers",
2184
+ "type": "bool"
2185
+ },
2186
+ {
2187
+ "internalType": "bool",
2188
+ "name": "allowOwnerMinting",
2189
+ "type": "bool"
2190
+ },
2191
+ {
2192
+ "internalType": "bool",
2193
+ "name": "allowSetCustomToken",
2194
+ "type": "bool"
2195
+ },
2196
+ {
2197
+ "internalType": "bool",
2198
+ "name": "allowTerminalMigration",
2199
+ "type": "bool"
2200
+ },
2201
+ {
2202
+ "internalType": "bool",
2203
+ "name": "allowSetTerminals",
2204
+ "type": "bool"
2205
+ },
2206
+ {
2207
+ "internalType": "bool",
2208
+ "name": "allowSetController",
2209
+ "type": "bool"
2210
+ },
2211
+ {
2212
+ "internalType": "bool",
2213
+ "name": "allowAddAccountingContext",
2214
+ "type": "bool"
2215
+ },
2216
+ {
2217
+ "internalType": "bool",
2218
+ "name": "allowAddPriceFeed",
2219
+ "type": "bool"
2220
+ },
2221
+ {
2222
+ "internalType": "bool",
2223
+ "name": "ownerMustSendPayouts",
2224
+ "type": "bool"
2225
+ },
2226
+ {
2227
+ "internalType": "bool",
2228
+ "name": "holdFees",
2229
+ "type": "bool"
2230
+ },
2231
+ {
2232
+ "internalType": "bool",
2233
+ "name": "useTotalSurplusForCashOuts",
2234
+ "type": "bool"
2235
+ },
2236
+ {
2237
+ "internalType": "bool",
2238
+ "name": "useDataHookForPay",
2239
+ "type": "bool"
2240
+ },
2241
+ {
2242
+ "internalType": "bool",
2243
+ "name": "useDataHookForCashOut",
2244
+ "type": "bool"
2245
+ },
2246
+ {
2247
+ "internalType": "address",
2248
+ "name": "dataHook",
2249
+ "type": "address"
2250
+ },
2251
+ {
2252
+ "internalType": "uint16",
2253
+ "name": "metadata",
2254
+ "type": "uint16"
2255
+ }
2256
+ ],
2257
+ "internalType": "struct JBRulesetMetadata",
2258
+ "name": "metadata",
2259
+ "type": "tuple"
2260
+ },
2261
+ {
2262
+ "components": [
2263
+ {
2264
+ "internalType": "uint256",
2265
+ "name": "groupId",
2266
+ "type": "uint256"
2267
+ },
2268
+ {
2269
+ "components": [
2270
+ {
2271
+ "internalType": "uint32",
2272
+ "name": "percent",
2273
+ "type": "uint32"
2274
+ },
2275
+ {
2276
+ "internalType": "uint64",
2277
+ "name": "projectId",
2278
+ "type": "uint64"
2279
+ },
2280
+ {
2281
+ "internalType": "address payable",
2282
+ "name": "beneficiary",
2283
+ "type": "address"
2284
+ },
2285
+ {
2286
+ "internalType": "bool",
2287
+ "name": "preferAddToBalance",
2288
+ "type": "bool"
2289
+ },
2290
+ {
2291
+ "internalType": "uint48",
2292
+ "name": "lockedUntil",
2293
+ "type": "uint48"
2294
+ },
2295
+ {
2296
+ "internalType": "contract IJBSplitHook",
2297
+ "name": "hook",
2298
+ "type": "address"
2299
+ }
2300
+ ],
2301
+ "internalType": "struct JBSplit[]",
2302
+ "name": "splits",
2303
+ "type": "tuple[]"
2304
+ }
2305
+ ],
2306
+ "internalType": "struct JBSplitGroup[]",
2307
+ "name": "splitGroups",
2308
+ "type": "tuple[]"
2309
+ },
2310
+ {
2311
+ "components": [
2312
+ {
2313
+ "internalType": "address",
2314
+ "name": "terminal",
2315
+ "type": "address"
2316
+ },
2317
+ {
2318
+ "internalType": "address",
2319
+ "name": "token",
2320
+ "type": "address"
2321
+ },
2322
+ {
2323
+ "components": [
2324
+ {
2325
+ "internalType": "uint224",
2326
+ "name": "amount",
2327
+ "type": "uint224"
2328
+ },
2329
+ {
2330
+ "internalType": "uint32",
2331
+ "name": "currency",
2332
+ "type": "uint32"
2333
+ }
2334
+ ],
2335
+ "internalType": "struct JBCurrencyAmount[]",
2336
+ "name": "payoutLimits",
2337
+ "type": "tuple[]"
2338
+ },
2339
+ {
2340
+ "components": [
2341
+ {
2342
+ "internalType": "uint224",
2343
+ "name": "amount",
2344
+ "type": "uint224"
2345
+ },
2346
+ {
2347
+ "internalType": "uint32",
2348
+ "name": "currency",
2349
+ "type": "uint32"
2350
+ }
2351
+ ],
2352
+ "internalType": "struct JBCurrencyAmount[]",
2353
+ "name": "surplusAllowances",
2354
+ "type": "tuple[]"
2355
+ }
2356
+ ],
2357
+ "internalType": "struct JBFundAccessLimitGroup[]",
2358
+ "name": "fundAccessLimitGroups",
2359
+ "type": "tuple[]"
2360
+ }
2361
+ ],
2362
+ "indexed": false,
2363
+ "internalType": "struct JBRulesetConfig[]",
2364
+ "name": "rulesetConfigurations",
2365
+ "type": "tuple[]"
2366
+ },
2367
+ {
2368
+ "indexed": false,
2369
+ "internalType": "bytes32",
2370
+ "name": "encodedConfigurationHash",
2371
+ "type": "bytes32"
2372
+ },
2373
+ {
2374
+ "indexed": false,
2375
+ "internalType": "address",
2376
+ "name": "caller",
2377
+ "type": "address"
2378
+ }
2379
+ ],
2380
+ "name": "DeployRevnet",
2381
+ "type": "event"
2382
+ },
2383
+ {
2384
+ "anonymous": false,
2385
+ "inputs": [
2386
+ {
2387
+ "indexed": true,
2388
+ "internalType": "uint256",
2389
+ "name": "revnetId",
2390
+ "type": "uint256"
2391
+ },
2392
+ {
2393
+ "indexed": false,
2394
+ "internalType": "bytes32",
2395
+ "name": "encodedConfigurationHash",
2396
+ "type": "bytes32"
2397
+ },
2398
+ {
2399
+ "components": [
2400
+ {
2401
+ "components": [
2402
+ {
2403
+ "internalType": "contract IJBSuckerDeployer",
2404
+ "name": "deployer",
2405
+ "type": "address"
2406
+ },
2407
+ {
2408
+ "components": [
2409
+ {
2410
+ "internalType": "address",
2411
+ "name": "localToken",
2412
+ "type": "address"
2413
+ },
2414
+ {
2415
+ "internalType": "uint32",
2416
+ "name": "minGas",
2417
+ "type": "uint32"
2418
+ },
2419
+ {
2420
+ "internalType": "address",
2421
+ "name": "remoteToken",
2422
+ "type": "address"
2423
+ },
2424
+ {
2425
+ "internalType": "uint256",
2426
+ "name": "minBridgeAmount",
2427
+ "type": "uint256"
2428
+ }
2429
+ ],
2430
+ "internalType": "struct JBTokenMapping[]",
2431
+ "name": "mappings",
2432
+ "type": "tuple[]"
2433
+ }
2434
+ ],
2435
+ "internalType": "struct JBSuckerDeployerConfig[]",
2436
+ "name": "deployerConfigurations",
2437
+ "type": "tuple[]"
2438
+ },
2439
+ {
2440
+ "internalType": "bytes32",
2441
+ "name": "salt",
2442
+ "type": "bytes32"
2443
+ }
2444
+ ],
2445
+ "indexed": false,
2446
+ "internalType": "struct REVSuckerDeploymentConfig",
2447
+ "name": "suckerDeploymentConfiguration",
2448
+ "type": "tuple"
2449
+ },
2450
+ {
2451
+ "indexed": false,
2452
+ "internalType": "address",
2453
+ "name": "caller",
2454
+ "type": "address"
2455
+ }
2456
+ ],
2457
+ "name": "DeploySuckers",
2458
+ "type": "event"
2459
+ },
2460
+ {
2461
+ "anonymous": false,
2462
+ "inputs": [
2463
+ {
2464
+ "indexed": true,
2465
+ "internalType": "uint256",
2466
+ "name": "revnetId",
2467
+ "type": "uint256"
2468
+ },
2469
+ {
2470
+ "indexed": true,
2471
+ "internalType": "address",
2472
+ "name": "newSplitOperator",
2473
+ "type": "address"
2474
+ },
2475
+ {
2476
+ "indexed": false,
2477
+ "internalType": "address",
2478
+ "name": "caller",
2479
+ "type": "address"
2480
+ }
2481
+ ],
2482
+ "name": "ReplaceSplitOperator",
2483
+ "type": "event"
2484
+ },
2485
+ {
2486
+ "anonymous": false,
2487
+ "inputs": [
2488
+ {
2489
+ "indexed": false,
2490
+ "internalType": "uint256",
2491
+ "name": "revnetId",
2492
+ "type": "uint256"
2493
+ },
2494
+ {
2495
+ "indexed": false,
2496
+ "internalType": "address",
2497
+ "name": "additionalOperator",
2498
+ "type": "address"
2499
+ },
2500
+ {
2501
+ "indexed": false,
2502
+ "internalType": "uint256[]",
2503
+ "name": "permissionIds",
2504
+ "type": "uint256[]"
2505
+ },
2506
+ {
2507
+ "indexed": false,
2508
+ "internalType": "address",
2509
+ "name": "caller",
2510
+ "type": "address"
2511
+ }
2512
+ ],
2513
+ "name": "SetAdditionalOperator",
2514
+ "type": "event"
2515
+ },
2516
+ {
2517
+ "anonymous": false,
2518
+ "inputs": [
2519
+ {
2520
+ "indexed": true,
2521
+ "internalType": "uint256",
2522
+ "name": "revnetId",
2523
+ "type": "uint256"
2524
+ },
2525
+ {
2526
+ "indexed": false,
2527
+ "internalType": "uint256",
2528
+ "name": "cashOutDelay",
2529
+ "type": "uint256"
2530
+ },
2531
+ {
2532
+ "indexed": false,
2533
+ "internalType": "address",
2534
+ "name": "caller",
2535
+ "type": "address"
2536
+ }
2537
+ ],
2538
+ "name": "SetCashOutDelay",
2539
+ "type": "event"
2540
+ },
2541
+ {
2542
+ "anonymous": false,
2543
+ "inputs": [
2544
+ {
2545
+ "indexed": true,
2546
+ "internalType": "uint256",
2547
+ "name": "revnetId",
2548
+ "type": "uint256"
2549
+ },
2550
+ {
2551
+ "indexed": true,
2552
+ "internalType": "uint256",
2553
+ "name": "stageId",
2554
+ "type": "uint256"
2555
+ },
2556
+ {
2557
+ "indexed": true,
2558
+ "internalType": "address",
2559
+ "name": "beneficiary",
2560
+ "type": "address"
2561
+ },
2562
+ {
2563
+ "indexed": false,
2564
+ "internalType": "uint256",
2565
+ "name": "count",
2566
+ "type": "uint256"
2567
+ },
2568
+ {
2569
+ "indexed": false,
2570
+ "internalType": "address",
2571
+ "name": "caller",
2572
+ "type": "address"
2573
+ }
2574
+ ],
2575
+ "name": "StoreAutoIssuanceAmount",
2576
+ "type": "event"
2577
+ },
2578
+ {
2579
+ "inputs": [
2580
+ {
2581
+ "internalType": "uint256",
2582
+ "name": "x",
2583
+ "type": "uint256"
2584
+ },
2585
+ {
2586
+ "internalType": "uint256",
2587
+ "name": "y",
2588
+ "type": "uint256"
2589
+ },
2590
+ {
2591
+ "internalType": "uint256",
2592
+ "name": "denominator",
2593
+ "type": "uint256"
2594
+ }
2595
+ ],
2596
+ "name": "PRBMath_MulDiv_Overflow",
2597
+ "type": "error"
2598
+ },
2599
+ {
2600
+ "inputs": [],
2601
+ "name": "REVDeployer_AutoIssuanceBeneficiaryZeroAddress",
2602
+ "type": "error"
2603
+ },
2604
+ {
2605
+ "inputs": [
2606
+ {
2607
+ "internalType": "uint256",
2608
+ "name": "cashOutDelay",
2609
+ "type": "uint256"
2610
+ },
2611
+ {
2612
+ "internalType": "uint256",
2613
+ "name": "blockTimestamp",
2614
+ "type": "uint256"
2615
+ }
2616
+ ],
2617
+ "name": "REVDeployer_CashOutDelayNotFinished",
2618
+ "type": "error"
2619
+ },
2620
+ {
2621
+ "inputs": [
2622
+ {
2623
+ "internalType": "uint256",
2624
+ "name": "cashOutTaxRate",
2625
+ "type": "uint256"
2626
+ },
2627
+ {
2628
+ "internalType": "uint256",
2629
+ "name": "maxCashOutTaxRate",
2630
+ "type": "uint256"
2631
+ }
2632
+ ],
2633
+ "name": "REVDeployer_CashOutsCantBeTurnedOffCompletely",
2634
+ "type": "error"
2635
+ },
2636
+ {
2637
+ "inputs": [
2638
+ {
2639
+ "internalType": "address",
2640
+ "name": "token",
2641
+ "type": "address"
2642
+ },
2643
+ {
2644
+ "internalType": "address",
2645
+ "name": "terminal",
2646
+ "type": "address"
2647
+ }
2648
+ ],
2649
+ "name": "REVDeployer_LoanSourceDoesntMatchTerminalConfigurations",
2650
+ "type": "error"
2651
+ },
2652
+ {
2653
+ "inputs": [],
2654
+ "name": "REVDeployer_MustHaveSplits",
2655
+ "type": "error"
2656
+ },
2657
+ {
2658
+ "inputs": [],
2659
+ "name": "REVDeployer_NothingToAutoIssue",
2660
+ "type": "error"
2661
+ },
2662
+ {
2663
+ "inputs": [],
2664
+ "name": "REVDeployer_RulesetDoesNotAllowDeployingSuckers",
2665
+ "type": "error"
2666
+ },
2667
+ {
2668
+ "inputs": [
2669
+ {
2670
+ "internalType": "uint256",
2671
+ "name": "stageId",
2672
+ "type": "uint256"
2673
+ }
2674
+ ],
2675
+ "name": "REVDeployer_StageNotStarted",
2676
+ "type": "error"
2677
+ },
2678
+ {
2679
+ "inputs": [],
2680
+ "name": "REVDeployer_StageTimesMustIncrease",
2681
+ "type": "error"
2682
+ },
2683
+ {
2684
+ "inputs": [],
2685
+ "name": "REVDeployer_StagesRequired",
2686
+ "type": "error"
2687
+ },
2688
+ {
2689
+ "inputs": [
2690
+ {
2691
+ "internalType": "uint256",
2692
+ "name": "revnetId",
2693
+ "type": "uint256"
2694
+ },
2695
+ {
2696
+ "internalType": "address",
2697
+ "name": "caller",
2698
+ "type": "address"
2699
+ }
2700
+ ],
2701
+ "name": "REVDeployer_Unauthorized",
2702
+ "type": "error"
2703
+ },
2704
+ {
2705
+ "inputs": [
2706
+ {
2707
+ "internalType": "address",
2708
+ "name": "spender",
2709
+ "type": "address"
2710
+ },
2711
+ {
2712
+ "internalType": "uint256",
2713
+ "name": "currentAllowance",
2714
+ "type": "uint256"
2715
+ },
2716
+ {
2717
+ "internalType": "uint256",
2718
+ "name": "requestedDecrease",
2719
+ "type": "uint256"
2720
+ }
2721
+ ],
2722
+ "name": "SafeERC20FailedDecreaseAllowance",
2723
+ "type": "error"
2724
+ },
2725
+ {
2726
+ "inputs": [
2727
+ {
2728
+ "internalType": "address",
2729
+ "name": "token",
2730
+ "type": "address"
2731
+ }
2732
+ ],
2733
+ "name": "SafeERC20FailedOperation",
2734
+ "type": "error"
2735
+ }
2736
+ ],
2737
+ "args": [],
2738
+ "solcInputHash": "f71d3fc8ea9b29896a8a303357115199",
2739
+ "receipt": {
2740
+ "type": "0x2",
2741
+ "status": "0x1",
2742
+ "cumulativeGasUsed": "0x59355a",
2743
+ "logs": [
2744
+ {
2745
+ "address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
2746
+ "topics": [
2747
+ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
2748
+ "0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
2749
+ "0x0000000000000000000000000740356dc773dee1ee291619cea1a07c692a56a8",
2750
+ "0x50adb6882cea713f5df6e014b804baef4ed79e6f43b4932c483f91c63dec7f10"
2751
+ ],
2752
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
2753
+ "blockHash": "0x06321bf12ce7a98890043da06c94607086aed3709c246662a81183ed3daa294d",
2754
+ "blockNumber": "0x8c3209",
2755
+ "blockTimestamp": "0x68c4063c",
2756
+ "transactionHash": "0x2f5790160bbbe235b2a97d9c668c40f65f597771be0522c22929ca4396e3ac83",
2757
+ "transactionIndex": "0x5",
2758
+ "logIndex": "0x0",
2759
+ "removed": false
2760
+ },
2761
+ {
2762
+ "address": "0x04fd6913d6c32d8c216e153a43c04b1857a7793d",
2763
+ "topics": [
2764
+ "0x5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d59",
2765
+ "0x00000000000000000000000007c8c5bf08f0361883728a8a5f8824ba5724ece3",
2766
+ "0x0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d",
2767
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
2768
+ ],
2769
+ "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000100000000000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001c",
2770
+ "blockHash": "0x06321bf12ce7a98890043da06c94607086aed3709c246662a81183ed3daa294d",
2771
+ "blockNumber": "0x8c3209",
2772
+ "blockTimestamp": "0x68c4063c",
2773
+ "transactionHash": "0x2f5790160bbbe235b2a97d9c668c40f65f597771be0522c22929ca4396e3ac83",
2774
+ "transactionIndex": "0x5",
2775
+ "logIndex": "0x1",
2776
+ "removed": false
2777
+ },
2778
+ {
2779
+ "address": "0x6b92c73682f0e1fac35a18ab17efa5e77dde9fe1",
2780
+ "topics": [
2781
+ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
2782
+ "0x0000000000000000000000000740356dc773dee1ee291619cea1a07c692a56a8"
2783
+ ],
2784
+ "data": "0x",
2785
+ "blockHash": "0x06321bf12ce7a98890043da06c94607086aed3709c246662a81183ed3daa294d",
2786
+ "blockNumber": "0x8c3209",
2787
+ "blockTimestamp": "0x68c4063c",
2788
+ "transactionHash": "0x2f5790160bbbe235b2a97d9c668c40f65f597771be0522c22929ca4396e3ac83",
2789
+ "transactionIndex": "0x5",
2790
+ "logIndex": "0x2",
2791
+ "removed": false
2792
+ },
2793
+ {
2794
+ "address": "0x0740356dc773dee1ee291619cea1a07c692a56a8",
2795
+ "topics": [
2796
+ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
2797
+ "0x948b5063b043c4f0632a523280a323cc157913fa9652234d2e94ee89a8f8059f"
2798
+ ],
2799
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000002",
2800
+ "blockHash": "0x06321bf12ce7a98890043da06c94607086aed3709c246662a81183ed3daa294d",
2801
+ "blockNumber": "0x8c3209",
2802
+ "blockTimestamp": "0x68c4063c",
2803
+ "transactionHash": "0x2f5790160bbbe235b2a97d9c668c40f65f597771be0522c22929ca4396e3ac83",
2804
+ "transactionIndex": "0x5",
2805
+ "logIndex": "0x3",
2806
+ "removed": false
2807
+ }
2808
+ ],
2809
+ "logsBloom": "0x00000000000010000001000000180000004000000000008000000000000000000000000000010000000000000040000020000000000000000000000000000000004000000000200000000800000000000080000000000000000000000002002000000000020000000000400000000800000000020000000800000000000000000800020000000000000104000000000100000000000000000000000000000000004000040000000080000000000000002210200000000000020800000004000000000002000000000000000000000000000000000001000000000000000020000000000000010000008408000000000200000000000080000040000000000000",
2810
+ "transactionHash": "0x2f5790160bbbe235b2a97d9c668c40f65f597771be0522c22929ca4396e3ac83",
2811
+ "transactionIndex": "0x5",
2812
+ "blockHash": "0x06321bf12ce7a98890043da06c94607086aed3709c246662a81183ed3daa294d",
2813
+ "blockNumber": "0x8c3209",
2814
+ "gasUsed": "0x579b32",
2815
+ "effectiveGasPrice": "0x2cb575b92",
2816
+ "from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
2817
+ "to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
2818
+ "contractAddress": null
2819
+ },
2820
+ "bytecode": "0x6101a060405234801562000011575f80fd5b506040516200651c3803806200651c8339810160408190526200003491620002ec565b6001600160a01b03808216608052861660a0819052604080516388bc2ef360e01b815290516388bc2ef3916004808201926020929091908290030181865afa15801562000083573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000a9919062000370565b6001600160a01b031660c0816001600160a01b031681525050856001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000125919062000370565b6001600160a01b0316610140816001600160a01b03168152505060a0516001600160a01b031663f434c9146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a4919062000370565b6001600160a01b039081166101205285811661018081905260e08690528482166101005290831661016052620001dd905f601c620001e9565b50505050505062000434565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811062000220576200022062000395565b60ff90921660209283029190910190910152620002403085858462000246565b50505050565b604080516060810182526001600160a01b0380861682526001600160401b0385166020830152818301849052610120519251631127c92960e21b81529192169063449f24a4906200029e9088908590600401620003a9565b5f604051808303815f87803b158015620002b6575f80fd5b505af1158015620002c9573d5f803e3d5ffd5b505050505050505050565b6001600160a01b0381168114620002e9575f80fd5b50565b5f805f805f8060c0878903121562000302575f80fd5b86516200030f81620002d4565b60208801519096506200032281620002d4565b6040880151606089015191965094506200033c81620002d4565b60808801519093506200034f81620002d4565b60a08801519092506200036281620002d4565b809150509295509295509295565b5f6020828403121562000381575f80fd5b81516200038e81620002d4565b9392505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03838116825260406020808401829052845190921681840152838201516001600160401b0316606080850191909152908401516080840191909152805160a084018190525f929182019190839060c08601905b808310156200042857845160ff16825293830193600192909201919083019062000403565b50979650505050505050565b60805160a05160c05160e0516101005161012051610140516101605161018051615fe16200053b5f395f81816105500152818161288001526128fe01525f818161062a01528181611ac00152611b2701525f81816102b6015281816107e80152818161168a0152818161222e015261231101525f818161069001528181611192015261158901525f818161051d015261173601525f818161024801528181610f68015281816110f801526112d601525f818161046a01526112af01525f818161065d01528181610bca01528181610cb001528181610e51015281816121620152818161237d0152818161240501526124d201525f8181610435015261085c0152615fe15ff3fe6080604052600436106101a6575f3560e01c80638cc35846116100e3578063b987005d11610092578063dbfbe5da11610062578063dbfbe5da14610619578063ee0fc1211461064c578063f434c9141461067f578063fb82b1b0146106b2575f80fd5b8063b987005d146105b4578063c22903b2146105d3578063c57981b5146105e6578063db29c892146105fa575f80fd5b80638cc358461461048c578063902b742e146104b957806399f6d77f146104ed578063abf8c5c81461050c578063b5d255331461053f578063b78edb6614610572578063b8a843d71461059e575f80fd5b8063437e61071161015957806367d39de21161012957806367d39de2146103c85780637249a773146103f35780637da0a8771461042757806388bc2ef314610459575f80fd5b8063437e6107146103245780634fa9af691461035f578063572b6c051461038a5780636169a3bb146103a9575f80fd5b806244a005146101aa57806301ffc9a7146101cb578063150b7a02146101ff5780631680e172146102375780632545de8e14610278578063293c4999146102a55780633b7ae807146102f0575b5f80fd5b3480156101b5575f80fd5b506101c96101c4366004613794565b6106e1565b005b3480156101d6575f80fd5b506101ea6101e53660046137c2565b610770565b60405190151581526020015b60405180910390f35b34801561020a575f80fd5b5061021e6102193660046137e9565b6107dc565b6040516001600160e01b031990911681526020016101f6565b348015610242575f80fd5b5061026a7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101f6565b348015610283575f80fd5b506102976102923660046138fc565b610823565b6040516101f69291906139fd565b3480156102b0575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f6565b3480156102fb575f80fd5b506102d861030a366004613a14565b60046020525f90815260409020546001600160a01b031681565b34801561032f575f80fd5b5061026a61033e366004613a2b565b5f602081815293815260408082208552928152828120909352825290205481565b34801561036a575f80fd5b5061026a610379366004613a14565b60026020525f908152604090205481565b348015610395575f80fd5b506101ea6103a4366004613a61565b61085a565b3480156103b4575f80fd5b5061026a6103c3366004613a7c565b61088c565b3480156103d3575f80fd5b5061026a6103e2366004613a14565b60036020525f908152604090205481565b3480156103fe575f80fd5b506102d861040d366004613a14565b60016020525f90815260409020546001600160a01b031681565b348015610432575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006102d8565b348015610464575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b348015610497575f80fd5b506104ab6104a6366004613b2e565b6108d1565b6040516101f6929190613bb2565b3480156104c4575f80fd5b506102d86104d3366004613a14565b60056020525f90815260409020546001600160a01b031681565b3480156104f8575f80fd5b506101ea610507366004613c41565b610acd565b348015610517575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b34801561054a575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b34801561057d575f80fd5b5061059161058c366004613c81565b610ba4565b6040516101f69190613d07565b3480156105a9575f80fd5b5061026a62278d0081565b3480156105bf575f80fd5b506101c96105ce366004613a2b565b610c91565b6101c96105e1366004613d19565b610ec3565b3480156105f1575f80fd5b5061026a601981565b348015610605575f80fd5b506101ea610614366004613794565b61118f565b348015610624575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b348015610657575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b34801561068a575f80fd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b3480156106bd575f80fd5b506106d16106cc366004613d50565b61122d565b6040516101f69493929190613d87565b6106f2826106ed6114d2565b611522565b806001600160a01b0316827f0329d6a81434b130c72eb65eea0e32e429dc1277b4aad86ec86454aefb6184516107266114d2565b6040516001600160a01b03909116815260200160405180910390a36107623061074d6114d2565b604080515f815260208101909152859061154d565b61076c82826115d7565b5050565b5f6001600160e01b0319821663366f9f2160e01b14806107a057506001600160e01b0319821663eeb73e8960e01b145b806107bb57506001600160e01b0319821663611481d960e11b145b806107d657506001600160e01b03198216630a85bd0160e11b145b92915050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610811575f80fd5b50630a85bd0160e11b95945050505050565b5f808a15801561083857610835611687565b9b505b61084a8c828d8d8d8d8d8d8d8d611718565b9b9c9a5050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b5f861580156108a05761089d611687565b97505b5f806108ae8a8a8a8a611b71565b915091506108c38a848b8b8b8b8b8989612151565b509798975050505050505050565b60c08101355f9081526001602052604081205460609081906001600160a01b0316801561096f57604051634661ac2360e11b81526001600160a01b03821690638cc3584690610924908890600401613f1c565b5f60405180830381865afa15801561093e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261096591908101906140a3565b9094509150610978565b84610120013593505b815160c08601355f908152600560205260409020546001909114906001600160a01b0316801515826109aa575f6109ad565b60015b816109b8575f6109bb565b60015b6109c59190614211565b60ff166001600160401b038111156109df576109df613e25565b604051908082528060200260200182016040528015610a2b57816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816109fd5790505b5095508015610a84576040518060600160405280836001600160a01b031681526020015f815260200160405180602001604052805f815250815250865f81518110610a7857610a7861422a565b60200260200101819052505b8215610ac357845f81518110610a9c57610a9c61422a565b602002602001015186600181518110610ab757610ab761422a565b60200260200101819052505b5050505050915091565b5f8381526001602090815260408083205460049092528220546001600160a01b039182169184811691161480610b145750806001600160a01b0316836001600160a01b0316145b80610b8957506040516399f6d77f60e01b81526001600160a01b038216906399f6d77f90610b4a9088908890889060040161427b565b602060405180830381865afa158015610b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b899190614396565b80610b995750610b998584612867565b9150505b9392505050565b6060610bb2836106ed6114d2565b6040516320c94b1360e11b8152600481018490525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063419296269060240161038060405180830381865afa158015610c18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3c9190614560565b61024081015190925060021c600190811614905080610c6e57604051631abe0dd960e21b815260040160405180910390fd5b5f85815260036020526040902054610c88908690866128b7565b95945050505050565b604051630969875760e21b815260048101849052602481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161038060405180830381865afa158015610cfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d229190614560565b50905042816060015165ffffffffffff161115610d5a576040516374e6881560e11b8152600481018490526024015b60405180910390fd5b5f8481526020818152604080832086845282528083206001600160a01b038616845290915281205490819003610da35760405163357db1e760e21b815260040160405180910390fd5b5f8581526020818152604080832087845282528083206001600160a01b038716808552925282209190915584867f0ad8046f3d571312df6d1867ac30c26e100f5684a9d7c2d3340c4e2a5b56360f84610dfa6114d2565b604051610e089291906139fd565b60405180910390a46040516363fdc96f60e11b815260048101869052602481018290526001600160a01b03848116604483015260a060648301525f60a4830181905260848301527f0000000000000000000000000000000000000000000000000000000000000000169063c7fb92de9060c4016020604051808303815f875af1158015610e97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebb9190614634565b505050505050565b61eeee610ed861012083016101008401613a61565b6001600160a01b031614610f1457610f143330610160840135610f0361012086016101008701613a61565b6001600160a01b03169291906129d7565b5f610f236101c083018361464b565b810190610f309190613a61565b90505f610f5482610f4961012086016101008701613a61565b610160860135612a3e565b90506001600160a01b03821663fef43257827f0000000000000000000000000000000000000000000000000000000000000000610f9961012088016101008901613a61565b610160880135610fac60208a018a613a61565b5f8a60200135604051602001610fc491815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ff49695949392919061468d565b60206040518083038185885af19350505050801561102f575060408051601f3d908101601f1916820190925261102c91810190614634565b60015b611189573d80801561105c576040519150601f19603f3d011682016040523d82523d5f602084013e611061565b606091505b5061eeee61107761012086016101008701613a61565b6001600160a01b0316146110b1576110b1836101608601356110a161012088016101008901613a61565b6001600160a01b03169190612a76565b6110d2336110c761012087016101008801613a61565b610160870135612a3e565b915033639e6eec058360208701356110f261012089016101008a01613a61565b604080517f000000000000000000000000000000000000000000000000000000000000000060208201526101608b0135915f91016040516020818303038152906040526040518763ffffffff1660e01b81526004016111559594939291906146e4565b5f604051808303818588803b15801561116c575f80fd5b505af115801561117e573d5f803e3d5ffd5b505050505050505050565b50505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663632af95f8330866111cb88612b30565b5f806040518763ffffffff1660e01b81526004016111ee96959493929190614730565b602060405180830381865afa158015611209573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9d9190614396565b5f8080606061124e604086018035906112499060208901613a61565b612867565b15611269575f85608001358660a001359350935093506114cb565b6040808601355f90815260026020522054428111156112a45760405163e4a9c90760e01b815260048101829052426024820152604401610d51565b5f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663862026507f000000000000000000000000000000000000000000000000000000000000000061130560e08b0160c08c01613a61565b6040518363ffffffff1660e01b81526004016113229291906139fd565b602060405180830381865afa15801561133d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136191906147a8565b9050610160870135158061137c57506001600160a01b038116155b1561139e5786610160013587608001358860a0013595509550955050506114cb565b5f6113b1608089013560196103e8612d0e565b90505f6113c28260808b01356147c3565b90505f6113df6101208b01358360a08d01356101608e0135612ddd565b90505f6114106113f4836101208e01356147c3565b85858e60a0013561140591906147c3565b8e6101600135612ddd565b604080516001808252818301909252919250816020015b60408051606080820183525f80835260208301529181019190915281526020019060019003908161142757505060408051606081018252308152602080820185905282516001600160a01b038a1691810191909152929950918282019101604051602081830303815290604052815250875f815181106114a9576114a961422a565b6020908102919091010152505061016089013597509550505060a08601359250505b9193509193565b5f3660146114df3361085a565b80156114eb5750808210155b1561151a575f366114fc83856147c3565b6115079282906147d6565b611510916147fd565b60601c9250505090565b339250505090565b61152c828261118f565b61076c5781816040516355e03cb160e11b8152600401610d519291906139fd565b604080516060810182526001600160a01b0380861682526001600160401b03851660208301528183018490529151631127c92960e21b815290917f0000000000000000000000000000000000000000000000000000000000000000169063449f24a4906115c09088908590600401614832565b5f604051808303815f87803b15801561116c575f80fd5b5f6115e183612b30565b90505f81516001600160401b038111156115fd576115fd613e25565b604051908082528060200260200182016040528015611626578160200160208202803683370190505b5090505f5b825181101561167a578281815181106116465761164661422a565b60200260200101518282815181106116605761166061422a565b60ff9092166020928302919091019091015260010161162b565b506111893084868461154d565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117089190614634565b6117139060016148bb565b905090565b5f805f6117278d8c8c8c611b71565b90925090506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ea74b8af8e61176689806148ce565b8960200135856117746114d2565b604051602001611786939291906148ed565b604051602081830303815290604052805190602001206040518463ffffffff1660e01b81526004016117ba93929190614b9d565b6020604051808303815f875af11580156117d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fa91906147a8565b5f8e8152600560205260409081902080546001600160a01b0319166001600160a01b0384161790559093506118359060608801908801614cc6565b1561185c575f8d815260066020908152604082208054600181018255908352912060149101555b61186c6080870160608801614cc6565b15611893575f8d815260066020908152604082208054600181018255908352912060159101555b6118a360a0870160808801614cc6565b156118ca575f8d815260066020908152604082208054600181018255908352912060169101555b6118da60c0870160a08801614cc6565b15611901575f8d815260066020908152604082208054600181018255908352912060179101555b8315611b50575f846001600160401b0381111561192057611920613e25565b60405190808252806020026020018201604052801561198057816020015b6040805160c0810182525f80825260208083018290529282018190526060808301829052608083019190915260a082015282525f1990920191018161193e5790505b5090505f5b85811015611aa857368787838181106119a0576119a061422a565b90506020028101906119b29190614ce1565b90506040518060c00160405280876001600160a01b03168152602001825f0160208101906119e09190614cf5565b62ffffff1681526020018260200160208101906119fd9190614d0e565b6001600160681b03168152602001611a1b6060840160408501614d27565b63ffffffff168152602001611a366080840160608501614d27565b63ffffffff168152602001611a4e6080840184614d42565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509152508351849084908110611a9457611a9461422a565b602090810291909101015250600101611985565b50604051631107934d60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063441e4d3490611af5908490600401614d87565b5f604051808303815f87803b158015611b0c575f80fd5b505af1158015611b1e573d5f803e3d5ffd5b50505050611b4e7f00000000000000000000000000000000000000000000000000000000000000008f6014612e50565b505b611b618d8d8d8d8d8d8d8989612151565b50509a9950505050505050505050565b60605f611b8085830186614d42565b90505f03611ba15760405163050751e560e21b815260040160405180910390fd5b611bae6060860186614d42565b90506001600160401b03811115611bc757611bc7613e25565b604051908082528060200260200182016040528015611c0057816020015b611bed613687565b815260200190600190039081611be55790505b5091505f611c146040870160208801614d27565b611c2460c0880160a08901613a61565b611c2e8880614e4b565b611c38908061464b565b611c428a80614e4b565b611c5090602081019061464b565b611c5a8c80614e4b565b60600135604051602001611c749796959493929190614e5f565b60405160208183030381529060405290505f611c91878787612ea4565b90505f5b611ca26060890189614d42565b905081101561213b5736611cb960608a018a614d42565b83818110611cc957611cc961422a565b9050602002810190611cdb9190614eb7565b90505f611cee6060830160408401614ecc565b61ffff16118015611d0b5750611d076060820182614ee7565b1590505b15611d29576040516340fb407760e01b815260040160405180910390fd5b5f82118015611d9a5750611d4060608a018a614d42565b611d4b6001856147c3565b818110611d5a57611d5a61422a565b9050602002810190611d6c9190614eb7565b611d7a906020810190614f2b565b65ffffffffffff16611d8f6020830183614f2b565b65ffffffffffff1611155b15611db85760405163b787fe6760e01b815260040160405180910390fd5b612710611dcc610100830160e08401614ecc565b61ffff1610611e0e57611de6610100820160e08301614ecc565b6040516380922c6d60e01b815261ffff90911660048201526127106024820152604401610d51565b611e28611e2160408b0160208c01614d27565b828561310b565b868381518110611e3a57611e3a61422a565b602002602001018190525083825f148015611e675750611e5d6020830183614f2b565b65ffffffffffff16155b611e8557611e786020830183614f2b565b65ffffffffffff16611e87565b425b611e976060840160408501614ecc565b611ea760a0850160808601614f46565b611eb760c0860160a08701614d27565b611ec760e0870160c08801614d27565b611ed8610100880160e08901614ecc565b604051602001611eee9796959493929190614f61565b60405160208183030381529060405293505f5b611f0e6020830183614fba565b90508110156121315736611f256020840184614fba565b83818110611f3557611f3561422a565b90506060020190505f6001600160a01b0316816040016020810190611f5a9190613a61565b6001600160a01b031603611f815760405163b79e8c7d60e01b815260040160405180910390fd5b611f916040820160208301614d0e565b6001600160681b03165f03611fa65750612129565b85611fb46020830183614d27565b611fc46060840160408501613a61565b611fd46040850160208601614d0e565b604051602001611fe79493929190614ffe565b60408051601f198184030181529190529550466120076020830183614d27565b63ffffffff16146120185750612129565b6120286060820160408301613a61565b6001600160a01b031661203b85426148bb565b8d7f5c05d79eeb764b1f5069fb55a8558e8a5cec91813a64282bc198dc9084c75df061206d6040860160208701614d0e565b6120756114d2565b604080516001600160681b0390931683526001600160a01b0390911660208301520160405180910390a46120af6040820160208301614d0e565b5f8d81526020819052604081206001600160681b039290921691906120d487426148bb565b81526020019081526020015f205f8360400160208101906120f59190613a61565b6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461212291906148bb565b9091555050505b600101611f01565b5050600101611c95565b5081805190602001209250505094509492505050565b871561221657886001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635c7465e5306121928b80614e4b565b6121a090604081019061464b565b878c8c6040518763ffffffff1660e01b81526004016121c496959493929190615551565b6020604051808303815f875af11580156121e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122049190614634565b14612211576122116155ba565b612490565b6040516331a9108f60e11b8152600481018a90525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561227b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229f91906147a8565b9050806001600160a01b03166122b36114d2565b6001600160a01b0316146122e557896122ca6114d2565b6040516355e03cb160e11b8152600401610d519291906139fd565b604051632142170760e11b81526001600160a01b038281166004830152306024830152604482018c90527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e906064015f604051808303815f87803b158015612352575f80fd5b505af1158015612364573d5f803e3d5ffd5b50506040516339284f3560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506339284f3591506123ba908d9087908c908c906004016155ce565b6020604051808303815f875af11580156123d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123fa9190614634565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663702a39778b6124358b80614e4b565b61244390604081019061464b565b6040518463ffffffff1660e01b815260040161246193929190615615565b5f604051808303815f87803b158015612478575f80fd5b505af115801561248a573d5f803e3d5ffd5b50505050505b6124c8896124a160608a018a614d42565b5f8181106124b1576124b161422a565b90506020028101906124c39190614eb7565b613310565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663581781918a6125028a80614e4b565b61250c908061464b565b6125168c80614e4b565b61252490602081019061464b565b61252e8e80614e4b565b606001358861253b6114d2565b60405160200161254d939291906148ed565b604051602081830303815290604052805190602001206040518763ffffffff1660e01b81526004016125849695949392919061562e565b6020604051808303815f875af11580156125a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c491906147a8565b505f6125d36020860186613a61565b6001600160a01b031614612759576125ee6020850185613a61565b5f8a815260016020908152604080832080546001600160a01b0319166001600160a01b039590951694909417909355909161262e91908701908701613a61565b6001600160a01b031614612759575f5b61264b6040860186614fba565b905081101561275757366126626040870187614fba565b838181106126725761267261422a565b905060600201905085602001602081019061268d9190613a61565b6001600160a01b0316639098afeb8c6126ac6040850160208601614cf5565b6126bc6060860160408701614d27565b6126c96020870187613a61565b6040516001600160e01b031960e087901b168152600481019490945262ffffff909216602484015263ffffffff1660448301526001600160a01b031660648201526084016020604051808303815f875af1158015612729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274d91906147a8565b505060010161263e565b505b5f61276a60c0890160a08a01613a61565b6001600160a01b0316146127cf5761279361278b60c0890160a08a01613a61565b8a6010612e50565b6127a360c0880160a08901613a61565b5f8a815260046020526040902080546001600160a01b0319166001600160a01b03929092169190911790555b6127e8896127e360608a0160408b01613a61565b6115d7565b6020830135156127ff576127fd8982856128b7565b505b5f898152600360205260409020819055887f71aa788b1959149d074eb49c039291bbb825b7586df2f05c0a26627c987c1471888888888888886128406114d2565b604051612854989796959493929190615c0f565b60405180910390a2505050505050505050565b6040516383db9d0160e01b81525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906383db9d01906111ee90869086906004016139fd565b6060837fd1ae357f26434a99ce1f9e98bc6f3b593847697f1a14b95622dd27cd9bffb14084846128e56114d2565b6040516128f493929190615dc0565b60405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f3f50e08585856020013561293a6114d2565b60405160200161294c939291906148ed565b60408051601f19818403018152919052805160209091012061296e8680614d42565b6040518563ffffffff1660e01b815260040161298d9493929190615df0565b5f604051808303815f875af11580156129a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129cf9190810190615e0f565b949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526111899186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506133b4565b5f61eeed196001600160a01b03841601612a59575080610b9d565b612a6d6001600160a01b0384168584613420565b505f9392505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612ac3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae79190614634565b905081811015612b235760405163e570110f60e01b81526001600160a01b03841660048201526024810182905260448101839052606401610d51565b61118984848484036134a2565b5f818152600660209081526040808320805482518185028101850190935280835260609493830182828015612b8257602002820191905f5260205f20905b815481526020019060010190808311612b6e575b5050505050905080516006612b9791906148bb565b6001600160401b03811115612bae57612bae613e25565b604051908082528060200260200182016040528015612bd7578160200160208202803683370190505b509150601160ff16825f81518110612bf157612bf161422a565b602002602001018181525050601960ff1682600181518110612c1557612c1561422a565b602002602001018181525050601860ff1682600281518110612c3957612c3961422a565b602002602001018181525050600660ff1682600381518110612c5d57612c5d61422a565b602002602001018181525050601260ff1682600481518110612c8157612c8161422a565b602002602001018181525050601e60ff1682600581518110612ca557612ca561422a565b6020026020010181815250505f5b8151811015612d0757818181518110612cce57612cce61422a565b602002602001015183826006612ce491906148bb565b81518110612cf457612cf461422a565b6020908102919091010152600101612cb3565b5050919050565b5f80805f19858709858702925082811083820303915050805f03612d4557838281612d3b57612d3b615e98565b0492505050610b9d565b838110612d7657604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610d51565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61270f198201612def57505f6129cf565b828410612dfd5750836129cf565b5f612e09868686612d0e565b9050825f03612e195790506129cf565b612e4681612e28858888612d0e565b612e34866127106147c3565b612e3e91906148bb565b612710612d0e565b9695505050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f81518110612e8457612e8461422a565b602002602001019060ff16908160ff16815250506111893085858461154d565b6060612eb36080850185615eac565b90506001600160401b03811115612ecc57612ecc613e25565b604051908082528060200260200182016040528015612f1f57816020015b604080516080810182525f8082526020820152606091810182905281810191909152815260200190600190039081612eea5790505b5090505f5b612f316080860186615eac565b90508110156131035736612f486080870187615eac565b83818110612f5857612f5861422a565b90506040020190505f612f6c868684613531565b90508063ffffffff165f03612fc457612f886020830183613a61565b612f986040840160208501613a61565b604051631ab3aa5760e01b81526001600160a01b03928316600482015291166024820152604401610d51565b6040805160018082528183019092525f91816020015b604080518082019091525f8082526020820152815260200190600190039081612fda57905050905060405180604001604052806001600160e01b03801681526020018363ffffffff16815250815f815181106130385761303861422a565b602002602001018190525060405180608001604052808460200160208101906130619190613a61565b6001600160a01b0316815260209081019061307e90860186613a61565b6001600160a01b031681526020015f6040519080825280602002602001820160405280156130d157816020015b604080518082019091525f80825260208201528152602001906001900390816130ab5790505b508152602001828152508585815181106130ed576130ed61422a565b6020908102919091010152505050600101612f24565b509392505050565b613113613687565b61311b6136d2565b61312b6060850160408601614ecc565b61ffff168152613142610100850160e08601614ecc565b61ffff16602082015263ffffffff8516604082015260016101c0820181905260a082018190526101e082018190526102008201523061022082015261318f61012085016101008601614ecc565b61ffff166102408201526040805160018082528183019092525f91816020015b604080518082019091525f8152606060208201528152602001906001900390816131af5750506040805180820190915260018152909150602081016131f76060880188614ee7565b808060200260200160405190810160405280939291908181526020015f905b828210156132425761323360c08302860136819003810190615ef1565b81526020019060010190613216565b5050505050815250815f8151811061325c5761325c61422a565b6020026020010181905250604051806101000160405280865f0160208101906132859190614f2b565b65ffffffffffff1681526020016132a260c0880160a08901614d27565b63ffffffff1681526020016132bd60a0880160808901614f46565b6001600160701b031681526020016132db60e0880160c08901614d27565b63ffffffff1681526020015f6001600160a01b0316815260200183815260200182815260200185815250925050509392505050565b61331d6020820182614f2b565b65ffffffffffff16158061334557504261333a6020830183614f2b565b65ffffffffffff1610155b1561334e575050565b5f61335c62278d00426148bb565b5f8481526002602052604090208190559050827f48a9634f50564cfe6648ff5e75795a36873bf96c408523d50017032657e67198826133996114d2565b6040516133a79291906139fd565b60405180910390a2505050565b5f8060205f8451602086015f885af1806133d3576040513d5f823e3d81fd5b50505f513d915081156133ea5780600114156133f7565b6001600160a01b0384163b155b1561118957604051635274afe760e01b81526001600160a01b0385166004820152602401610d51565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561346d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134919190614634565b905061118984846134a285856148bb565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526134f38482613642565b611189576040516001600160a01b0384811660248301525f604483015261352791869182169063095ea7b390606401612a0c565b61118984826133b4565b5f805b83811015613638573685858381811061354f5761354f61422a565b90506020028101906135619190615f97565b90506135736040850160208601613a61565b6001600160a01b03166135896020830183613a61565b6001600160a01b03160361362f575f5b6135a66020830183614fba565b905081101561362d57366135bd6020840184614fba565b838181106135cd576135cd61422a565b6060029190910191506135e590506020870187613a61565b6001600160a01b03166135fb6020830183613a61565b6001600160a01b031603613624576136196060820160408301614d27565b945050505050610b9d565b50600101613599565b505b50600101613534565b505f949350505050565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612e46575081156136735780600114612e46565b50505050506001600160a01b03163b151590565b60408051610100810182525f8082526020820181905291810182905260608101829052608081019190915260a081016136be6136d2565b815260200160608152602001606081525090565b60408051610260810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6001600160a01b0381168114613781575f80fd5b50565b803561378f8161376d565b919050565b5f80604083850312156137a5575f80fd5b8235915060208301356137b78161376d565b809150509250929050565b5f602082840312156137d2575f80fd5b81356001600160e01b031981168114610b9d575f80fd5b5f805f805f608086880312156137fd575f80fd5b85356138088161376d565b945060208601356138188161376d565b93506040860135925060608601356001600160401b038082111561383a575f80fd5b818801915088601f83011261384d575f80fd5b81358181111561385b575f80fd5b89602082850101111561386c575f80fd5b9699959850939650602001949392505050565b5f60c0828403121561388f575f80fd5b50919050565b5f8083601f8401126138a5575f80fd5b5081356001600160401b038111156138bb575f80fd5b6020830191508360208260051b85010111156138d5575f80fd5b9250929050565b5f6060828403121561388f575f80fd5b5f6040828403121561388f575f80fd5b5f805f805f805f805f60e08a8c031215613914575f80fd5b8935985060208a01356001600160401b0380821115613931575f80fd5b61393d8d838e0161387f565b995060408c0135915080821115613952575f80fd5b61395e8d838e01613895565b909950975060608c0135915080821115613976575f80fd5b6139828d838e016138dc565b965060808c0135915080821115613997575f80fd5b6139a38d838e016138ec565b955060a08c01359150808211156139b8575f80fd5b6139c48d838e0161387f565b945060c08c01359150808211156139d9575f80fd5b506139e68c828d01613895565b915080935050809150509295985092959850929598565b9182526001600160a01b0316602082015260400190565b5f60208284031215613a24575f80fd5b5035919050565b5f805f60608486031215613a3d575f80fd5b83359250602084013591506040840135613a568161376d565b809150509250925092565b5f60208284031215613a71575f80fd5b8135610b9d8161376d565b5f805f805f8060a08789031215613a91575f80fd5b8635955060208701356001600160401b0380821115613aae575f80fd5b613aba8a838b0161387f565b96506040890135915080821115613acf575f80fd5b613adb8a838b01613895565b90965094506060890135915080821115613af3575f80fd5b613aff8a838b016138dc565b93506080890135915080821115613b14575f80fd5b50613b2189828a016138ec565b9150509295509295509295565b5f60208284031215613b3e575f80fd5b81356001600160401b03811115613b53575f80fd5b82016101808185031215610b9d575f80fd5b5f5b83811015613b7f578181015183820152602001613b67565b50505f910152565b5f8151808452613b9e816020860160208601613b65565b601f01601f19169290920160200192915050565b5f604080830185845260206040818601528186518084526060935060608701915060608160051b8801018389015f5b83811015613c3157898303605f19018552815180516001600160a01b031684528681015187850152880151888401889052613c1e88850182613b87565b9587019593505090850190600101613be1565b50909a9950505050505050505050565b5f805f838503610160811215613c55575f80fd5b84359350610120601f1982011215613c6b575f80fd5b50602084019150610140840135613a568161376d565b5f8060408385031215613c92575f80fd5b8235915060208301356001600160401b03811115613cae575f80fd5b613cba858286016138ec565b9150509250929050565b5f815180845260208085019450602084015f5b83811015613cfc5781516001600160a01b031687529582019590820190600101613cd7565b509495945050505050565b602081525f610b9d6020830184613cc4565b5f60208284031215613d29575f80fd5b81356001600160401b03811115613d3e575f80fd5b82016102008185031215610b9d575f80fd5b5f60208284031215613d60575f80fd5b81356001600160401b03811115613d75575f80fd5b82016101a08185031215610b9d575f80fd5b5f6080820186835260208681850152604086604086015260606080606087015283875180865260a08801915060a08160051b89010195508489015f5b82811015613e1357898803609f19018452815180516001600160a01b0316895287810151888a0152860151868901869052613e00868a0182613b87565b9850509286019290860190600101613dc3565b50959c9b505050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b803560ff8116811461378f575f80fd5b63ffffffff81168114613781575f80fd5b803561378f81613e49565b8035613e708161376d565b6001600160a01b0316825260ff613e8960208301613e39565b1660208301526040810135613e9d81613e49565b63ffffffff166040830152606090810135910152565b5f808335601e19843603018112613ec8575f80fd5b83016020810192503590506001600160401b03811115613ee6575f80fd5b8036038213156138d5575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60208152613f3d60208201613f3084613784565b6001600160a01b03169052565b5f613f4a60208401613784565b6001600160a01b038116604084015250613f6a6060830160408501613e65565b60c083013560e083015261010060e084013581840152613f8b818501613784565b9050610120613fa4818501836001600160a01b03169052565b61014091508085013582850152506101608185013581850152613fc981860186613eb3565b6101808681015292509050610c886101a085018383613ef4565b604051606081016001600160401b038111828210171561400557614005613e25565b60405290565b60405161026081016001600160401b038111828210171561400557614005613e25565b60405161012081016001600160401b038111828210171561400557614005613e25565b604051601f8201601f191681016001600160401b038111828210171561407957614079613e25565b604052919050565b5f6001600160401b0382111561409957614099613e25565b5060051b60200190565b5f80604083850312156140b4575f80fd5b825191506020808401516001600160401b03808211156140d2575f80fd5b818601915086601f8301126140e5575f80fd5b81516140f86140f382614081565b614051565b81815260059190911b83018401908481019089831115614116575f80fd5b8585015b838110156141ec57805185811115614130575f80fd5b8601601f196060828e0382011215614146575f80fd5b61414e613fe3565b8983015161415b8161376d565b815260408301518a820152606083015188811115614177575f80fd5b8084019350508d603f84011261418b575f80fd5b898301518881111561419f5761419f613e25565b6141af8b84601f84011601614051565b92508083528e60408286010111156141c5575f80fd5b6141d5818c850160408701613b65565b50604081019190915284525091860191860161411a565b508096505050505050509250929050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156107d6576107d66141fd565b634e487b7160e01b5f52603260045260245ffd5b65ffffffffffff81168114613781575f80fd5b803561378f8161423e565b6001600160701b0381168114613781575f80fd5b803561378f8161425c565b8381526101608101833561428e8161423e565b65ffffffffffff81166020840152506142a960208501614251565b65ffffffffffff81166040840152506142c460408501614251565b65ffffffffffff81166060840152506142df60608501614251565b65ffffffffffff81166080840152506142fa60808501613e5a565b63ffffffff811660a08401525061431360a08501614270565b6001600160701b03811660c08401525061432f60c08501613e5a565b63ffffffff811660e08401525061434860e08501613784565b61010061435f818501836001600160a01b03169052565b850135610120840152506001600160a01b0383166101408301526129cf565b8015158114613781575f80fd5b805161378f8161437e565b5f602082840312156143a6575f80fd5b8151610b9d8161437e565b805161378f8161423e565b805161378f81613e49565b805161378f8161425c565b805161378f8161376d565b61ffff81168114613781575f80fd5b805161378f816143dd565b5f6102608284031215614408575f80fd5b61441061400b565b905061441b826143ec565b8152614429602083016143ec565b602082015261443a604083016143bc565b604082015261444b6060830161438b565b606082015261445c6080830161438b565b608082015261446d60a0830161438b565b60a082015261447e60c0830161438b565b60c082015261448f60e0830161438b565b60e08201526101006144a281840161438b565b908201526101206144b483820161438b565b908201526101406144c683820161438b565b908201526101606144d883820161438b565b908201526101806144ea83820161438b565b908201526101a06144fc83820161438b565b908201526101c061450e83820161438b565b908201526101e061452083820161438b565b9082015261020061453283820161438b565b908201526102206145448382016143d2565b908201526102406145568382016143ec565b9082015292915050565b5f80828403610380811215614573575f80fd5b61012080821215614582575f80fd5b61458a61402e565b9150614595856143b1565b82526145a3602086016143b1565b60208301526145b4604086016143b1565b60408301526145c5606086016143b1565b60608301526145d6608086016143bc565b60808301526145e760a086016143c7565b60a08301526145f860c086016143bc565b60c083015261460960e086016143d2565b60e0830152610100808601518184015250819350614629868287016143f7565b925050509250929050565b5f60208284031215614644575f80fd5b5051919050565b5f808335601e19843603018112614660575f80fd5b8301803591506001600160401b03821115614679575f80fd5b6020019150368190038213156138d5575f80fd5b8681525f60018060a01b03808816602084015286604084015280861660608401525083608083015260e060a08301525f60e08301526101008060c08401526146d781840185613b87565b9998505050505050505050565b85815260018060a01b0385166020820152836040820152821515606082015260c060808201525f60c082015260e060a08201525f61472560e0830184613b87565b979650505050505050565b6001600160a01b03878116825286166020808301919091526040820186905260c06060830181905285519083018190525f918681019160e085019190845b8181101561478a5784518452938201939282019260010161476e565b5050509415156080840152505090151560a090910152949350505050565b5f602082840312156147b8575f80fd5b8151610b9d8161376d565b818103818111156107d6576107d66141fd565b5f80858511156147e4575f80fd5b838611156147f0575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561482a5780818660140360031b1b83161692505b505092915050565b5f60018060a01b03808516835260206040602085015260a084018286511660408601526001600160401b036020870151166060860152604086015192506060608086015280835180835260c0870191506020850194505f92505b808310156148af57845160ff16825293830193600192909201919083019061488c565b50979650505050505050565b808201808211156107d6576107d66141fd565b5f823561015e198336030181126148e3575f80fd5b9190910192915050565b92835260208301919091526001600160a01b0316604082015260600190565b5f8235607e19833603018112614920575f80fd5b90910192915050565b80356001600160681b038116811461378f575f80fd5b803561378f816143dd565b803562ffffff8116811461378f575f80fd5b803561378f8161437e565b5f60808084018335601e19853603018112614980575f80fd5b840160208181019135906001600160401b0382111561499d575f80fd5b6101c080830236038413156149b0575f80fd5b608089529382905260a0938489015f5b84811015614af5576149e2826149d588614929565b6001600160681b03169052565b6149ed848701613e5a565b63ffffffff16848301526040614a04878201613e5a565b63ffffffff16908301526060614a1b87820161493f565b61ffff1690830152614a2e868901613784565b6001600160a01b031688830152858701358783015260c0614a5081880161494a565b62ffffff169083015260e0614a66878201613e39565b60ff1690830152610100614a7b87820161495c565b151590830152610120614a8f87820161495c565b151590830152610140614aa387820161495c565b151590830152610160614ab787820161495c565b151590830152610180614acb87820161495c565b1515908301526101a0614adf87820161495c565b15159083015294820194908201906001016149c0565b50614b0260208a01613e5a565b63ffffffff811660208c01529650614b1c60408a01613e39565b60ff811660408c01529650614b3360608a01613784565b6001600160a01b03811660608c015296506146d7565b8035614b548161437e565b151582526020810135614b668161437e565b151560208301526040810135614b7b8161437e565b151560408301526060810135614b908161437e565b8015156060840152505050565b838152606060208201525f614bb28485613eb3565b6101606060850152614bc96101c085018284613ef4565b915050614bd96020860186613eb3565b605f1980868503016080870152614bf1848385613ef4565b9350614c006040890189613eb3565b93509150808685030160a0870152614c19848484613ef4565b9350614c2760608901613784565b6001600160a01b03811660c08801529250614c456080890189613eb3565b93509150808685030160e0870152614c5e848484613ef4565b9350614c6d60a089018961490c565b925080868503016101008701525050614c868282614967565b915050614c9560c08601613784565b6001600160a01b0316610120840152614cb5610140840160e08701614b49565b604092909201929092529392505050565b5f60208284031215614cd6575f80fd5b8135610b9d8161437e565b5f8235609e198336030181126148e3575f80fd5b5f60208284031215614d05575f80fd5b610b9d8261494a565b5f60208284031215614d1e575f80fd5b610b9d82614929565b5f60208284031215614d37575f80fd5b8135610b9d81613e49565b5f808335601e19843603018112614d57575f80fd5b8301803591506001600160401b03821115614d70575f80fd5b6020019150600581901b36038213156138d5575f80fd5b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015614e3d57888303603f19018552815180516001600160a01b031684528781015162ffffff1688850152868101516001600160681b03168785015260608082015163ffffffff908116918601919091526080808301519091169085015260a09081015160c091850182905290614e2981860183613cc4565b968901969450505090860190600101614dae565b509098975050505050505050565b5f8235607e198336030181126148e3575f80fd5b63ffffffff881681526001600160a01b038716602082015260a0604082018190525f90614e8f9083018789613ef4565b8281036060840152614ea2818688613ef4565b91505082608083015298975050505050505050565b5f823561011e198336030181126148e3575f80fd5b5f60208284031215614edc575f80fd5b8135610b9d816143dd565b5f808335601e19843603018112614efc575f80fd5b8301803591506001600160401b03821115614f15575f80fd5b602001915060c0810236038213156138d5575f80fd5b5f60208284031215614f3b575f80fd5b8135610b9d8161423e565b5f60208284031215614f56575f80fd5b8135610b9d8161425c565b60e081525f614f7360e083018a613b87565b60208301989098525061ffff95861660408201526001600160701b0394909416606085015263ffffffff9283166080850152911660a083015290911660c090910152919050565b5f808335601e19843603018112614fcf575f80fd5b8301803591506001600160401b03821115614fe8575f80fd5b60200191506060810236038213156138d5575f80fd5b608081525f6150106080830187613b87565b63ffffffff959095166020830152506001600160a01b039290921660408301526001600160681b0316606090910152919050565b805161ffff1682526020810151615061602084018261ffff169052565b506040810151615079604084018263ffffffff169052565b50606081015161508d606084018215159052565b5060808101516150a1608084018215159052565b5060a08101516150b560a084018215159052565b5060c08101516150c960c084018215159052565b5060e08101516150dd60e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff811682850152611189565b5f82825180855260208086019550808260051b8401018186015f5b8481101561525657858303601f190189528151805184528401516040858501819052815181860181905291860191606090818701905f5b8181101561523f578551805163ffffffff1684528a8101516001600160401b03168b850152858101516001600160a01b03908116878601528582015115158686015260808083015165ffffffffffff169086015260a09182015116908401529489019460c0909201916001016151ce565b50509b87019b955050509184019150600101615197565b5090979650505050505050565b5f815180845260208085019450602084015f5b83811015613cfc57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615276565b5f82825180855260208086019550808260051b8401018186015f5b8481101561525657858303601f19018952815180516001600160a01b0390811685528582015116858501526040808201516080828701819052919061530e83880182615263565b925050506060808301519250858203818701525061532c8183615263565b9a86019a94505050908301906001016152c7565b5f82825180855260208086019550808260051b8401018186015f5b8481101561525657601f198684030189528151805165ffffffffffff1684528481015163ffffffff908116868601526040808301516001600160701b031690860152606080830151909116908501526080808201516001600160a01b03169085015260a08082015161034091906153d482880182615044565b505060c0820151816103008701526153ee8287018261517c565b91505060e0820151915084810361032086015261540b81836152ac565b9a86019a945050509083019060010161535b565b5f808335601e19843603018112615434575f80fd5b83016020810192503590506001600160401b03811115615452575f80fd5b6060810236038213156138d5575f80fd5b5f8235603e19833603018112614920575f80fd5b5f8383855260208086019550808560051b830101845f5b8781101561525657848303601f190189526154a98288615463565b604080850182356154b98161376d565b6001600160a01b0381811688526154d2858a018661541f565b898b018690529384905292945060609291508288015f5b868110156155395783356154fc8161376d565b8316825260ff61550d858d01613e39565b168b8301528584013561551f81613e49565b63ffffffff168287015292840192908401906001016154e9565b509d89019d975050509386019350505060010161548e565b6001600160a01b038716815260a0602082018190525f906155759083018789613ef4565b82810360408401526155878187615340565b9050828103606084015261559c818587615477565b83810360809094019390935250505f81526020019695505050505050565b634e487b7160e01b5f52600160045260245ffd5b848152608060208201525f6155e66080830186615340565b82810360408401526155f9818587615477565b83810360609094019390935250505f8152602001949350505050565b838152604060208201525f610c88604083018486613ef4565b868152608060208201525f615647608083018789613ef4565b828103604084015261565a818688613ef4565b915050826060830152979650505050505050565b5f808335601e19843603018112615683575f80fd5b83016020810192503590506001600160401b038111156156a1575f80fd5b8060051b36038213156138d5575f80fd5b8183525f60208085019450825f5b85811015613cfc5781356156d381613e49565b63ffffffff1687526001600160681b036156ee838501614929565b16838801526040808301356157028161376d565b6001600160a01b03169088015260609687019691909101906001016156c0565b5f808335601e19843603018112615737575f80fd5b83016020810192503590506001600160401b03811115615755575f80fd5b60c0810236038213156138d5575f80fd5b80356001600160401b038116811461378f575f80fd5b8183525f60208085019450825f5b85811015613cfc57813561579d81613e49565b63ffffffff1687526001600160401b036157b8838501615766565b16838801526040808301356157cc8161376d565b6001600160a01b0316908801526060828101356157e88161437e565b1515908801526080828101356157fd8161423e565b65ffffffffffff169088015260a0615816838201613784565b6001600160a01b03169088015260c096870196919091019060010161578a565b5f8383855260208086019550808560051b830101845f5b8781101561525657848303601f1901895281353688900361011e19018112615873575f80fd5b87016101206158918561588584614251565b65ffffffffffff169052565b61589d8683018361541f565b82888801526158af83880182846156b2565b9250505060406158c081840161493f565b61ffff169086015260606158d683820184615722565b878403838901526158e884828461577c565b935050505060806158fa818401614270565b6001600160701b03169086015260a0615914838201613e5a565b63ffffffff169086015260c061592b838201613e5a565b63ffffffff169086015260e061594283820161493f565b61ffff169086015261010061595883820161493f565b61ffff1695019490945250978301979083019060010161584d565b5f808335601e19843603018112615988575f80fd5b83016020810192503590506001600160401b038111156159a6575f80fd5b8060061b36038213156138d5575f80fd5b8183525f60208085019450825f5b85811015613cfc5781356159d88161376d565b6001600160a01b03908116885282840135906159f38261376d565b168784015260409687019691909101906001016159c5565b5f60608084018335615a1c8161376d565b6001600160a01b03908116865260209085820135615a398161376d565b811660208801526040615a4e8782018861541f565b606060408b015294859052935f9060808a015b81831015615ab5578635615a748161376d565b8516815262ffffff615a8788880161494a565b168682015283870135615a9981613e49565b63ffffffff168185015295870195600192909201918701615a61565b9a9950505050505050505050565b5f8383855260208086019550808560051b830101845f5b8781101561525657848303601f19018952615af58288615463565b60408085018235615b058161376d565b6001600160a01b039081168752838801359036859003601e19018212615b29575f80fd5b9301878101939035906001600160401b03821115615b45575f80fd5b8160071b3603851315615b56575f80fd5b878901849052918190526060918288015f5b83811015615bc3578635615b7b8161376d565b83168252868b0135615b8c81613e49565b63ffffffff16828c015286860135615ba38161376d565b831682870152868501358583015260809687019690910190600101615b68565b509d89019d9750505093860193505050600101615ada565b5f615be6828361566e565b60408552615bf8604086018284615ac3565b915050602083013560208501528091505092915050565b60e081525f615c1e8a8b61490c565b60c060e0840152615c2f8182613eb3565b60806101a0860152615c4661022086018284613ef4565b915050615c566020830183613eb3565b61019f1980878503016101c0880152615c70848385613ef4565b9350615c7f6040860186613eb3565b9350915080878503016101e088015250615c9a838383613ef4565b925050506060820135610200850152615cb560208d01613e5a565b63ffffffff81166101008601529150615cd060408d01613784565b6001600160a01b0381166101208601529150615cef60608d018d61566e565b925060df198086840301610140870152615d0a838584615836565b9350615d1960808f018f615973565b93509150808685030161016087015250615d348383836159b7565b92505050615d4460a08c01613784565b6001600160a01b03166101808401528281036020840152615d66818a8c615477565b90508281036040840152615d7a8189615a0b565b90508281036060840152615d8e8188615bdb565b90508281036080840152615da28187615340565b9150508360a08301526146d760c08301846001600160a01b03169052565b838152606060208201525f615dd86060830185615bdb565b905060018060a01b0383166040830152949350505050565b848152836020820152606060408201525f612e46606083018486615ac3565b5f6020808385031215615e20575f80fd5b82516001600160401b03811115615e35575f80fd5b8301601f81018513615e45575f80fd5b8051615e536140f382614081565b81815260059190911b82018301908381019087831115615e71575f80fd5b928401925b82841015614725578351615e898161376d565b82529284019290840190615e76565b634e487b7160e01b5f52601260045260245ffd5b5f808335601e19843603018112615ec1575f80fd5b8301803591506001600160401b03821115615eda575f80fd5b6020019150600681901b36038213156138d5575f80fd5b5f60c08284031215615f01575f80fd5b60405160c081018181106001600160401b0382111715615f2357615f23613e25565b6040528235615f3181613e49565b8152615f3f60208401615766565b60208201526040830135615f528161376d565b60408201526060830135615f658161437e565b60608201526080830135615f788161423e565b608082015260a0830135615f8b8161376d565b60a08201529392505050565b5f8235603e198336030181126148e3575f80fdfea2646970667358221220a65dd1b0393318be33b98bea5093652be65932761f1712727bd697956b18864164736f6c63430008170033",
2821
+ "deployedBytecode": "0x6080604052600436106101a6575f3560e01c80638cc35846116100e3578063b987005d11610092578063dbfbe5da11610062578063dbfbe5da14610619578063ee0fc1211461064c578063f434c9141461067f578063fb82b1b0146106b2575f80fd5b8063b987005d146105b4578063c22903b2146105d3578063c57981b5146105e6578063db29c892146105fa575f80fd5b80638cc358461461048c578063902b742e146104b957806399f6d77f146104ed578063abf8c5c81461050c578063b5d255331461053f578063b78edb6614610572578063b8a843d71461059e575f80fd5b8063437e61071161015957806367d39de21161012957806367d39de2146103c85780637249a773146103f35780637da0a8771461042757806388bc2ef314610459575f80fd5b8063437e6107146103245780634fa9af691461035f578063572b6c051461038a5780636169a3bb146103a9575f80fd5b806244a005146101aa57806301ffc9a7146101cb578063150b7a02146101ff5780631680e172146102375780632545de8e14610278578063293c4999146102a55780633b7ae807146102f0575b5f80fd5b3480156101b5575f80fd5b506101c96101c4366004613794565b6106e1565b005b3480156101d6575f80fd5b506101ea6101e53660046137c2565b610770565b60405190151581526020015b60405180910390f35b34801561020a575f80fd5b5061021e6102193660046137e9565b6107dc565b6040516001600160e01b031990911681526020016101f6565b348015610242575f80fd5b5061026a7f000000000000000000000000000000000000000000000000000000000000000381565b6040519081526020016101f6565b348015610283575f80fd5b506102976102923660046138fc565b610823565b6040516101f69291906139fd565b3480156102b0575f80fd5b506102d87f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d481565b6040516001600160a01b0390911681526020016101f6565b3480156102fb575f80fd5b506102d861030a366004613a14565b60046020525f90815260409020546001600160a01b031681565b34801561032f575f80fd5b5061026a61033e366004613a2b565b5f602081815293815260408082208552928152828120909352825290205481565b34801561036a575f80fd5b5061026a610379366004613a14565b60026020525f908152604090205481565b348015610395575f80fd5b506101ea6103a4366004613a61565b61085a565b3480156103b4575f80fd5b5061026a6103c3366004613a7c565b61088c565b3480156103d3575f80fd5b5061026a6103e2366004613a14565b60036020525f908152604090205481565b3480156103fe575f80fd5b506102d861040d366004613a14565b60016020525f90815260409020546001600160a01b031681565b348015610432575f80fd5b507f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666102d8565b348015610464575f80fd5b506102d87f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf81565b348015610497575f80fd5b506104ab6104a6366004613b2e565b6108d1565b6040516101f6929190613bb2565b3480156104c4575f80fd5b506102d86104d3366004613a14565b60056020525f90815260409020546001600160a01b031681565b3480156104f8575f80fd5b506101ea610507366004613c41565b610acd565b348015610517575f80fd5b506102d87f000000000000000000000000ef60878d00378ac5f93d209f4616450ee8d41ca781565b34801561054a575f80fd5b506102d87f00000000000000000000000007c8c5bf08f0361883728a8a5f8824ba5724ece381565b34801561057d575f80fd5b5061059161058c366004613c81565b610ba4565b6040516101f69190613d07565b3480156105a9575f80fd5b5061026a62278d0081565b3480156105bf575f80fd5b506101c96105ce366004613a2b565b610c91565b6101c96105e1366004613d19565b610ec3565b3480156105f1575f80fd5b5061026a601981565b348015610605575f80fd5b506101ea610614366004613794565b61118f565b348015610624575f80fd5b506102d87f00000000000000000000000003ef9ea1467df70d4b1e1d619aa9a2a2f820ee2481565b348015610657575f80fd5b506102d87f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a81565b34801561068a575f80fd5b506102d87f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d81565b3480156106bd575f80fd5b506106d16106cc366004613d50565b61122d565b6040516101f69493929190613d87565b6106f2826106ed6114d2565b611522565b806001600160a01b0316827f0329d6a81434b130c72eb65eea0e32e429dc1277b4aad86ec86454aefb6184516107266114d2565b6040516001600160a01b03909116815260200160405180910390a36107623061074d6114d2565b604080515f815260208101909152859061154d565b61076c82826115d7565b5050565b5f6001600160e01b0319821663366f9f2160e01b14806107a057506001600160e01b0319821663eeb73e8960e01b145b806107bb57506001600160e01b0319821663611481d960e11b145b806107d657506001600160e01b03198216630a85bd0160e11b145b92915050565b5f336001600160a01b037f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d41614610811575f80fd5b50630a85bd0160e11b95945050505050565b5f808a15801561083857610835611687565b9b505b61084a8c828d8d8d8d8d8d8d8d611718565b9b9c9a5050505050505050505050565b7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666001600160a01b0390811691161490565b5f861580156108a05761089d611687565b97505b5f806108ae8a8a8a8a611b71565b915091506108c38a848b8b8b8b8b8989612151565b509798975050505050505050565b60c08101355f9081526001602052604081205460609081906001600160a01b0316801561096f57604051634661ac2360e11b81526001600160a01b03821690638cc3584690610924908890600401613f1c565b5f60405180830381865afa15801561093e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261096591908101906140a3565b9094509150610978565b84610120013593505b815160c08601355f908152600560205260409020546001909114906001600160a01b0316801515826109aa575f6109ad565b60015b816109b8575f6109bb565b60015b6109c59190614211565b60ff166001600160401b038111156109df576109df613e25565b604051908082528060200260200182016040528015610a2b57816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816109fd5790505b5095508015610a84576040518060600160405280836001600160a01b031681526020015f815260200160405180602001604052805f815250815250865f81518110610a7857610a7861422a565b60200260200101819052505b8215610ac357845f81518110610a9c57610a9c61422a565b602002602001015186600181518110610ab757610ab761422a565b60200260200101819052505b5050505050915091565b5f8381526001602090815260408083205460049092528220546001600160a01b039182169184811691161480610b145750806001600160a01b0316836001600160a01b0316145b80610b8957506040516399f6d77f60e01b81526001600160a01b038216906399f6d77f90610b4a9088908890889060040161427b565b602060405180830381865afa158015610b65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b899190614396565b80610b995750610b998584612867565b9150505b9392505050565b6060610bb2836106ed6114d2565b6040516320c94b1360e11b8152600481018490525f907f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a6001600160a01b03169063419296269060240161038060405180830381865afa158015610c18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3c9190614560565b61024081015190925060021c600190811614905080610c6e57604051631abe0dd960e21b815260040160405180910390fd5b5f85815260036020526040902054610c88908690866128b7565b95945050505050565b604051630969875760e21b815260048101849052602481018390525f907f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a6001600160a01b0316906325a61d5c9060440161038060405180830381865afa158015610cfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d229190614560565b50905042816060015165ffffffffffff161115610d5a576040516374e6881560e11b8152600481018490526024015b60405180910390fd5b5f8481526020818152604080832086845282528083206001600160a01b038616845290915281205490819003610da35760405163357db1e760e21b815260040160405180910390fd5b5f8581526020818152604080832087845282528083206001600160a01b038716808552925282209190915584867f0ad8046f3d571312df6d1867ac30c26e100f5684a9d7c2d3340c4e2a5b56360f84610dfa6114d2565b604051610e089291906139fd565b60405180910390a46040516363fdc96f60e11b815260048101869052602481018290526001600160a01b03848116604483015260a060648301525f60a4830181905260848301527f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a169063c7fb92de9060c4016020604051808303815f875af1158015610e97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebb9190614634565b505050505050565b61eeee610ed861012083016101008401613a61565b6001600160a01b031614610f1457610f143330610160840135610f0361012086016101008701613a61565b6001600160a01b03169291906129d7565b5f610f236101c083018361464b565b810190610f309190613a61565b90505f610f5482610f4961012086016101008701613a61565b610160860135612a3e565b90506001600160a01b03821663fef43257827f0000000000000000000000000000000000000000000000000000000000000003610f9961012088016101008901613a61565b610160880135610fac60208a018a613a61565b5f8a60200135604051602001610fc491815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610ff49695949392919061468d565b60206040518083038185885af19350505050801561102f575060408051601f3d908101601f1916820190925261102c91810190614634565b60015b611189573d80801561105c576040519150601f19603f3d011682016040523d82523d5f602084013e611061565b606091505b5061eeee61107761012086016101008701613a61565b6001600160a01b0316146110b1576110b1836101608601356110a161012088016101008901613a61565b6001600160a01b03169190612a76565b6110d2336110c761012087016101008801613a61565b610160870135612a3e565b915033639e6eec058360208701356110f261012089016101008a01613a61565b604080517f000000000000000000000000000000000000000000000000000000000000000360208201526101608b0135915f91016040516020818303038152906040526040518763ffffffff1660e01b81526004016111559594939291906146e4565b5f604051808303818588803b15801561116c575f80fd5b505af115801561117e573d5f803e3d5ffd5b505050505050505050565b50505050565b5f7f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d6001600160a01b031663632af95f8330866111cb88612b30565b5f806040518763ffffffff1660e01b81526004016111ee96959493929190614730565b602060405180830381865afa158015611209573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9d9190614396565b5f8080606061124e604086018035906112499060208901613a61565b612867565b15611269575f85608001358660a001359350935093506114cb565b6040808601355f90815260026020522054428111156112a45760405163e4a9c90760e01b815260048101829052426024820152604401610d51565b5f6001600160a01b037f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf1663862026507f000000000000000000000000000000000000000000000000000000000000000361130560e08b0160c08c01613a61565b6040518363ffffffff1660e01b81526004016113229291906139fd565b602060405180830381865afa15801561133d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136191906147a8565b9050610160870135158061137c57506001600160a01b038116155b1561139e5786610160013587608001358860a0013595509550955050506114cb565b5f6113b1608089013560196103e8612d0e565b90505f6113c28260808b01356147c3565b90505f6113df6101208b01358360a08d01356101608e0135612ddd565b90505f6114106113f4836101208e01356147c3565b85858e60a0013561140591906147c3565b8e6101600135612ddd565b604080516001808252818301909252919250816020015b60408051606080820183525f80835260208301529181019190915281526020019060019003908161142757505060408051606081018252308152602080820185905282516001600160a01b038a1691810191909152929950918282019101604051602081830303815290604052815250875f815181106114a9576114a961422a565b6020908102919091010152505061016089013597509550505060a08601359250505b9193509193565b5f3660146114df3361085a565b80156114eb5750808210155b1561151a575f366114fc83856147c3565b6115079282906147d6565b611510916147fd565b60601c9250505090565b339250505090565b61152c828261118f565b61076c5781816040516355e03cb160e11b8152600401610d519291906139fd565b604080516060810182526001600160a01b0380861682526001600160401b03851660208301528183018490529151631127c92960e21b815290917f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d169063449f24a4906115c09088908590600401614832565b5f604051808303815f87803b15801561116c575f80fd5b5f6115e183612b30565b90505f81516001600160401b038111156115fd576115fd613e25565b604051908082528060200260200182016040528015611626578160200160208202803683370190505b5090505f5b825181101561167a578281815181106116465761164661422a565b60200260200101518282815181106116605761166061422a565b60ff9092166020928302919091019091015260010161162b565b506111893084868461154d565b5f7f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d46001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117089190614634565b6117139060016148bb565b905090565b5f805f6117278d8c8c8c611b71565b90925090506001600160a01b037f000000000000000000000000ef60878d00378ac5f93d209f4616450ee8d41ca71663ea74b8af8e61176689806148ce565b8960200135856117746114d2565b604051602001611786939291906148ed565b604051602081830303815290604052805190602001206040518463ffffffff1660e01b81526004016117ba93929190614b9d565b6020604051808303815f875af11580156117d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fa91906147a8565b5f8e8152600560205260409081902080546001600160a01b0319166001600160a01b0384161790559093506118359060608801908801614cc6565b1561185c575f8d815260066020908152604082208054600181018255908352912060149101555b61186c6080870160608801614cc6565b15611893575f8d815260066020908152604082208054600181018255908352912060159101555b6118a360a0870160808801614cc6565b156118ca575f8d815260066020908152604082208054600181018255908352912060169101555b6118da60c0870160a08801614cc6565b15611901575f8d815260066020908152604082208054600181018255908352912060179101555b8315611b50575f846001600160401b0381111561192057611920613e25565b60405190808252806020026020018201604052801561198057816020015b6040805160c0810182525f80825260208083018290529282018190526060808301829052608083019190915260a082015282525f1990920191018161193e5790505b5090505f5b85811015611aa857368787838181106119a0576119a061422a565b90506020028101906119b29190614ce1565b90506040518060c00160405280876001600160a01b03168152602001825f0160208101906119e09190614cf5565b62ffffff1681526020018260200160208101906119fd9190614d0e565b6001600160681b03168152602001611a1b6060840160408501614d27565b63ffffffff168152602001611a366080840160608501614d27565b63ffffffff168152602001611a4e6080840184614d42565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509152508351849084908110611a9457611a9461422a565b602090810291909101015250600101611985565b50604051631107934d60e21b81526001600160a01b037f00000000000000000000000003ef9ea1467df70d4b1e1d619aa9a2a2f820ee24169063441e4d3490611af5908490600401614d87565b5f604051808303815f87803b158015611b0c575f80fd5b505af1158015611b1e573d5f803e3d5ffd5b50505050611b4e7f00000000000000000000000003ef9ea1467df70d4b1e1d619aa9a2a2f820ee248f6014612e50565b505b611b618d8d8d8d8d8d8d8989612151565b50509a9950505050505050505050565b60605f611b8085830186614d42565b90505f03611ba15760405163050751e560e21b815260040160405180910390fd5b611bae6060860186614d42565b90506001600160401b03811115611bc757611bc7613e25565b604051908082528060200260200182016040528015611c0057816020015b611bed613687565b815260200190600190039081611be55790505b5091505f611c146040870160208801614d27565b611c2460c0880160a08901613a61565b611c2e8880614e4b565b611c38908061464b565b611c428a80614e4b565b611c5090602081019061464b565b611c5a8c80614e4b565b60600135604051602001611c749796959493929190614e5f565b60405160208183030381529060405290505f611c91878787612ea4565b90505f5b611ca26060890189614d42565b905081101561213b5736611cb960608a018a614d42565b83818110611cc957611cc961422a565b9050602002810190611cdb9190614eb7565b90505f611cee6060830160408401614ecc565b61ffff16118015611d0b5750611d076060820182614ee7565b1590505b15611d29576040516340fb407760e01b815260040160405180910390fd5b5f82118015611d9a5750611d4060608a018a614d42565b611d4b6001856147c3565b818110611d5a57611d5a61422a565b9050602002810190611d6c9190614eb7565b611d7a906020810190614f2b565b65ffffffffffff16611d8f6020830183614f2b565b65ffffffffffff1611155b15611db85760405163b787fe6760e01b815260040160405180910390fd5b612710611dcc610100830160e08401614ecc565b61ffff1610611e0e57611de6610100820160e08301614ecc565b6040516380922c6d60e01b815261ffff90911660048201526127106024820152604401610d51565b611e28611e2160408b0160208c01614d27565b828561310b565b868381518110611e3a57611e3a61422a565b602002602001018190525083825f148015611e675750611e5d6020830183614f2b565b65ffffffffffff16155b611e8557611e786020830183614f2b565b65ffffffffffff16611e87565b425b611e976060840160408501614ecc565b611ea760a0850160808601614f46565b611eb760c0860160a08701614d27565b611ec760e0870160c08801614d27565b611ed8610100880160e08901614ecc565b604051602001611eee9796959493929190614f61565b60405160208183030381529060405293505f5b611f0e6020830183614fba565b90508110156121315736611f256020840184614fba565b83818110611f3557611f3561422a565b90506060020190505f6001600160a01b0316816040016020810190611f5a9190613a61565b6001600160a01b031603611f815760405163b79e8c7d60e01b815260040160405180910390fd5b611f916040820160208301614d0e565b6001600160681b03165f03611fa65750612129565b85611fb46020830183614d27565b611fc46060840160408501613a61565b611fd46040850160208601614d0e565b604051602001611fe79493929190614ffe565b60408051601f198184030181529190529550466120076020830183614d27565b63ffffffff16146120185750612129565b6120286060820160408301613a61565b6001600160a01b031661203b85426148bb565b8d7f5c05d79eeb764b1f5069fb55a8558e8a5cec91813a64282bc198dc9084c75df061206d6040860160208701614d0e565b6120756114d2565b604080516001600160681b0390931683526001600160a01b0390911660208301520160405180910390a46120af6040820160208301614d0e565b5f8d81526020819052604081206001600160681b039290921691906120d487426148bb565b81526020019081526020015f205f8360400160208101906120f59190613a61565b6001600160a01b03166001600160a01b031681526020019081526020015f205f82825461212291906148bb565b9091555050505b600101611f01565b5050600101611c95565b5081805190602001209250505094509492505050565b871561221657886001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a16635c7465e5306121928b80614e4b565b6121a090604081019061464b565b878c8c6040518763ffffffff1660e01b81526004016121c496959493929190615551565b6020604051808303815f875af11580156121e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122049190614634565b14612211576122116155ba565b612490565b6040516331a9108f60e11b8152600481018a90525f907f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d46001600160a01b031690636352211e90602401602060405180830381865afa15801561227b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229f91906147a8565b9050806001600160a01b03166122b36114d2565b6001600160a01b0316146122e557896122ca6114d2565b6040516355e03cb160e11b8152600401610d519291906139fd565b604051632142170760e11b81526001600160a01b038281166004830152306024830152604482018c90527f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d416906342842e0e906064015f604051808303815f87803b158015612352575f80fd5b505af1158015612364573d5f803e3d5ffd5b50506040516339284f3560e01b81526001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1692506339284f3591506123ba908d9087908c908c906004016155ce565b6020604051808303815f875af11580156123d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123fa9190614634565b506001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1663702a39778b6124358b80614e4b565b61244390604081019061464b565b6040518463ffffffff1660e01b815260040161246193929190615615565b5f604051808303815f87803b158015612478575f80fd5b505af115801561248a573d5f803e3d5ffd5b50505050505b6124c8896124a160608a018a614d42565b5f8181106124b1576124b161422a565b90506020028101906124c39190614eb7565b613310565b6001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1663581781918a6125028a80614e4b565b61250c908061464b565b6125168c80614e4b565b61252490602081019061464b565b61252e8e80614e4b565b606001358861253b6114d2565b60405160200161254d939291906148ed565b604051602081830303815290604052805190602001206040518763ffffffff1660e01b81526004016125849695949392919061562e565b6020604051808303815f875af11580156125a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c491906147a8565b505f6125d36020860186613a61565b6001600160a01b031614612759576125ee6020850185613a61565b5f8a815260016020908152604080832080546001600160a01b0319166001600160a01b039590951694909417909355909161262e91908701908701613a61565b6001600160a01b031614612759575f5b61264b6040860186614fba565b905081101561275757366126626040870187614fba565b838181106126725761267261422a565b905060600201905085602001602081019061268d9190613a61565b6001600160a01b0316639098afeb8c6126ac6040850160208601614cf5565b6126bc6060860160408701614d27565b6126c96020870187613a61565b6040516001600160e01b031960e087901b168152600481019490945262ffffff909216602484015263ffffffff1660448301526001600160a01b031660648201526084016020604051808303815f875af1158015612729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274d91906147a8565b505060010161263e565b505b5f61276a60c0890160a08a01613a61565b6001600160a01b0316146127cf5761279361278b60c0890160a08a01613a61565b8a6010612e50565b6127a360c0880160a08901613a61565b5f8a815260046020526040902080546001600160a01b0319166001600160a01b03929092169190911790555b6127e8896127e360608a0160408b01613a61565b6115d7565b6020830135156127ff576127fd8982856128b7565b505b5f898152600360205260409020819055887f71aa788b1959149d074eb49c039291bbb825b7586df2f05c0a26627c987c1471888888888888886128406114d2565b604051612854989796959493929190615c0f565b60405180910390a2505050505050505050565b6040516383db9d0160e01b81525f906001600160a01b037f00000000000000000000000007c8c5bf08f0361883728a8a5f8824ba5724ece316906383db9d01906111ee90869086906004016139fd565b6060837fd1ae357f26434a99ce1f9e98bc6f3b593847697f1a14b95622dd27cd9bffb14084846128e56114d2565b6040516128f493929190615dc0565b60405180910390a27f00000000000000000000000007c8c5bf08f0361883728a8a5f8824ba5724ece36001600160a01b0316632f3f50e08585856020013561293a6114d2565b60405160200161294c939291906148ed565b60408051601f19818403018152919052805160209091012061296e8680614d42565b6040518563ffffffff1660e01b815260040161298d9493929190615df0565b5f604051808303815f875af11580156129a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129cf9190810190615e0f565b949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526111899186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506133b4565b5f61eeed196001600160a01b03841601612a59575080610b9d565b612a6d6001600160a01b0384168584613420565b505f9392505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612ac3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae79190614634565b905081811015612b235760405163e570110f60e01b81526001600160a01b03841660048201526024810182905260448101839052606401610d51565b61118984848484036134a2565b5f818152600660209081526040808320805482518185028101850190935280835260609493830182828015612b8257602002820191905f5260205f20905b815481526020019060010190808311612b6e575b5050505050905080516006612b9791906148bb565b6001600160401b03811115612bae57612bae613e25565b604051908082528060200260200182016040528015612bd7578160200160208202803683370190505b509150601160ff16825f81518110612bf157612bf161422a565b602002602001018181525050601960ff1682600181518110612c1557612c1561422a565b602002602001018181525050601860ff1682600281518110612c3957612c3961422a565b602002602001018181525050600660ff1682600381518110612c5d57612c5d61422a565b602002602001018181525050601260ff1682600481518110612c8157612c8161422a565b602002602001018181525050601e60ff1682600581518110612ca557612ca561422a565b6020026020010181815250505f5b8151811015612d0757818181518110612cce57612cce61422a565b602002602001015183826006612ce491906148bb565b81518110612cf457612cf461422a565b6020908102919091010152600101612cb3565b5050919050565b5f80805f19858709858702925082811083820303915050805f03612d4557838281612d3b57612d3b615e98565b0492505050610b9d565b838110612d7657604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610d51565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61270f198201612def57505f6129cf565b828410612dfd5750836129cf565b5f612e09868686612d0e565b9050825f03612e195790506129cf565b612e4681612e28858888612d0e565b612e34866127106147c3565b612e3e91906148bb565b612710612d0e565b9695505050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f81518110612e8457612e8461422a565b602002602001019060ff16908160ff16815250506111893085858461154d565b6060612eb36080850185615eac565b90506001600160401b03811115612ecc57612ecc613e25565b604051908082528060200260200182016040528015612f1f57816020015b604080516080810182525f8082526020820152606091810182905281810191909152815260200190600190039081612eea5790505b5090505f5b612f316080860186615eac565b90508110156131035736612f486080870187615eac565b83818110612f5857612f5861422a565b90506040020190505f612f6c868684613531565b90508063ffffffff165f03612fc457612f886020830183613a61565b612f986040840160208501613a61565b604051631ab3aa5760e01b81526001600160a01b03928316600482015291166024820152604401610d51565b6040805160018082528183019092525f91816020015b604080518082019091525f8082526020820152815260200190600190039081612fda57905050905060405180604001604052806001600160e01b03801681526020018363ffffffff16815250815f815181106130385761303861422a565b602002602001018190525060405180608001604052808460200160208101906130619190613a61565b6001600160a01b0316815260209081019061307e90860186613a61565b6001600160a01b031681526020015f6040519080825280602002602001820160405280156130d157816020015b604080518082019091525f80825260208201528152602001906001900390816130ab5790505b508152602001828152508585815181106130ed576130ed61422a565b6020908102919091010152505050600101612f24565b509392505050565b613113613687565b61311b6136d2565b61312b6060850160408601614ecc565b61ffff168152613142610100850160e08601614ecc565b61ffff16602082015263ffffffff8516604082015260016101c0820181905260a082018190526101e082018190526102008201523061022082015261318f61012085016101008601614ecc565b61ffff166102408201526040805160018082528183019092525f91816020015b604080518082019091525f8152606060208201528152602001906001900390816131af5750506040805180820190915260018152909150602081016131f76060880188614ee7565b808060200260200160405190810160405280939291908181526020015f905b828210156132425761323360c08302860136819003810190615ef1565b81526020019060010190613216565b5050505050815250815f8151811061325c5761325c61422a565b6020026020010181905250604051806101000160405280865f0160208101906132859190614f2b565b65ffffffffffff1681526020016132a260c0880160a08901614d27565b63ffffffff1681526020016132bd60a0880160808901614f46565b6001600160701b031681526020016132db60e0880160c08901614d27565b63ffffffff1681526020015f6001600160a01b0316815260200183815260200182815260200185815250925050509392505050565b61331d6020820182614f2b565b65ffffffffffff16158061334557504261333a6020830183614f2b565b65ffffffffffff1610155b1561334e575050565b5f61335c62278d00426148bb565b5f8481526002602052604090208190559050827f48a9634f50564cfe6648ff5e75795a36873bf96c408523d50017032657e67198826133996114d2565b6040516133a79291906139fd565b60405180910390a2505050565b5f8060205f8451602086015f885af1806133d3576040513d5f823e3d81fd5b50505f513d915081156133ea5780600114156133f7565b6001600160a01b0384163b155b1561118957604051635274afe760e01b81526001600160a01b0385166004820152602401610d51565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561346d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134919190614634565b905061118984846134a285856148bb565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526134f38482613642565b611189576040516001600160a01b0384811660248301525f604483015261352791869182169063095ea7b390606401612a0c565b61118984826133b4565b5f805b83811015613638573685858381811061354f5761354f61422a565b90506020028101906135619190615f97565b90506135736040850160208601613a61565b6001600160a01b03166135896020830183613a61565b6001600160a01b03160361362f575f5b6135a66020830183614fba565b905081101561362d57366135bd6020840184614fba565b838181106135cd576135cd61422a565b6060029190910191506135e590506020870187613a61565b6001600160a01b03166135fb6020830183613a61565b6001600160a01b031603613624576136196060820160408301614d27565b945050505050610b9d565b50600101613599565b505b50600101613534565b505f949350505050565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612e46575081156136735780600114612e46565b50505050506001600160a01b03163b151590565b60408051610100810182525f8082526020820181905291810182905260608101829052608081019190915260a081016136be6136d2565b815260200160608152602001606081525090565b60408051610260810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6001600160a01b0381168114613781575f80fd5b50565b803561378f8161376d565b919050565b5f80604083850312156137a5575f80fd5b8235915060208301356137b78161376d565b809150509250929050565b5f602082840312156137d2575f80fd5b81356001600160e01b031981168114610b9d575f80fd5b5f805f805f608086880312156137fd575f80fd5b85356138088161376d565b945060208601356138188161376d565b93506040860135925060608601356001600160401b038082111561383a575f80fd5b818801915088601f83011261384d575f80fd5b81358181111561385b575f80fd5b89602082850101111561386c575f80fd5b9699959850939650602001949392505050565b5f60c0828403121561388f575f80fd5b50919050565b5f8083601f8401126138a5575f80fd5b5081356001600160401b038111156138bb575f80fd5b6020830191508360208260051b85010111156138d5575f80fd5b9250929050565b5f6060828403121561388f575f80fd5b5f6040828403121561388f575f80fd5b5f805f805f805f805f60e08a8c031215613914575f80fd5b8935985060208a01356001600160401b0380821115613931575f80fd5b61393d8d838e0161387f565b995060408c0135915080821115613952575f80fd5b61395e8d838e01613895565b909950975060608c0135915080821115613976575f80fd5b6139828d838e016138dc565b965060808c0135915080821115613997575f80fd5b6139a38d838e016138ec565b955060a08c01359150808211156139b8575f80fd5b6139c48d838e0161387f565b945060c08c01359150808211156139d9575f80fd5b506139e68c828d01613895565b915080935050809150509295985092959850929598565b9182526001600160a01b0316602082015260400190565b5f60208284031215613a24575f80fd5b5035919050565b5f805f60608486031215613a3d575f80fd5b83359250602084013591506040840135613a568161376d565b809150509250925092565b5f60208284031215613a71575f80fd5b8135610b9d8161376d565b5f805f805f8060a08789031215613a91575f80fd5b8635955060208701356001600160401b0380821115613aae575f80fd5b613aba8a838b0161387f565b96506040890135915080821115613acf575f80fd5b613adb8a838b01613895565b90965094506060890135915080821115613af3575f80fd5b613aff8a838b016138dc565b93506080890135915080821115613b14575f80fd5b50613b2189828a016138ec565b9150509295509295509295565b5f60208284031215613b3e575f80fd5b81356001600160401b03811115613b53575f80fd5b82016101808185031215610b9d575f80fd5b5f5b83811015613b7f578181015183820152602001613b67565b50505f910152565b5f8151808452613b9e816020860160208601613b65565b601f01601f19169290920160200192915050565b5f604080830185845260206040818601528186518084526060935060608701915060608160051b8801018389015f5b83811015613c3157898303605f19018552815180516001600160a01b031684528681015187850152880151888401889052613c1e88850182613b87565b9587019593505090850190600101613be1565b50909a9950505050505050505050565b5f805f838503610160811215613c55575f80fd5b84359350610120601f1982011215613c6b575f80fd5b50602084019150610140840135613a568161376d565b5f8060408385031215613c92575f80fd5b8235915060208301356001600160401b03811115613cae575f80fd5b613cba858286016138ec565b9150509250929050565b5f815180845260208085019450602084015f5b83811015613cfc5781516001600160a01b031687529582019590820190600101613cd7565b509495945050505050565b602081525f610b9d6020830184613cc4565b5f60208284031215613d29575f80fd5b81356001600160401b03811115613d3e575f80fd5b82016102008185031215610b9d575f80fd5b5f60208284031215613d60575f80fd5b81356001600160401b03811115613d75575f80fd5b82016101a08185031215610b9d575f80fd5b5f6080820186835260208681850152604086604086015260606080606087015283875180865260a08801915060a08160051b89010195508489015f5b82811015613e1357898803609f19018452815180516001600160a01b0316895287810151888a0152860151868901869052613e00868a0182613b87565b9850509286019290860190600101613dc3565b50959c9b505050505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b803560ff8116811461378f575f80fd5b63ffffffff81168114613781575f80fd5b803561378f81613e49565b8035613e708161376d565b6001600160a01b0316825260ff613e8960208301613e39565b1660208301526040810135613e9d81613e49565b63ffffffff166040830152606090810135910152565b5f808335601e19843603018112613ec8575f80fd5b83016020810192503590506001600160401b03811115613ee6575f80fd5b8036038213156138d5575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60208152613f3d60208201613f3084613784565b6001600160a01b03169052565b5f613f4a60208401613784565b6001600160a01b038116604084015250613f6a6060830160408501613e65565b60c083013560e083015261010060e084013581840152613f8b818501613784565b9050610120613fa4818501836001600160a01b03169052565b61014091508085013582850152506101608185013581850152613fc981860186613eb3565b6101808681015292509050610c886101a085018383613ef4565b604051606081016001600160401b038111828210171561400557614005613e25565b60405290565b60405161026081016001600160401b038111828210171561400557614005613e25565b60405161012081016001600160401b038111828210171561400557614005613e25565b604051601f8201601f191681016001600160401b038111828210171561407957614079613e25565b604052919050565b5f6001600160401b0382111561409957614099613e25565b5060051b60200190565b5f80604083850312156140b4575f80fd5b825191506020808401516001600160401b03808211156140d2575f80fd5b818601915086601f8301126140e5575f80fd5b81516140f86140f382614081565b614051565b81815260059190911b83018401908481019089831115614116575f80fd5b8585015b838110156141ec57805185811115614130575f80fd5b8601601f196060828e0382011215614146575f80fd5b61414e613fe3565b8983015161415b8161376d565b815260408301518a820152606083015188811115614177575f80fd5b8084019350508d603f84011261418b575f80fd5b898301518881111561419f5761419f613e25565b6141af8b84601f84011601614051565b92508083528e60408286010111156141c5575f80fd5b6141d5818c850160408701613b65565b50604081019190915284525091860191860161411a565b508096505050505050509250929050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156107d6576107d66141fd565b634e487b7160e01b5f52603260045260245ffd5b65ffffffffffff81168114613781575f80fd5b803561378f8161423e565b6001600160701b0381168114613781575f80fd5b803561378f8161425c565b8381526101608101833561428e8161423e565b65ffffffffffff81166020840152506142a960208501614251565b65ffffffffffff81166040840152506142c460408501614251565b65ffffffffffff81166060840152506142df60608501614251565b65ffffffffffff81166080840152506142fa60808501613e5a565b63ffffffff811660a08401525061431360a08501614270565b6001600160701b03811660c08401525061432f60c08501613e5a565b63ffffffff811660e08401525061434860e08501613784565b61010061435f818501836001600160a01b03169052565b850135610120840152506001600160a01b0383166101408301526129cf565b8015158114613781575f80fd5b805161378f8161437e565b5f602082840312156143a6575f80fd5b8151610b9d8161437e565b805161378f8161423e565b805161378f81613e49565b805161378f8161425c565b805161378f8161376d565b61ffff81168114613781575f80fd5b805161378f816143dd565b5f6102608284031215614408575f80fd5b61441061400b565b905061441b826143ec565b8152614429602083016143ec565b602082015261443a604083016143bc565b604082015261444b6060830161438b565b606082015261445c6080830161438b565b608082015261446d60a0830161438b565b60a082015261447e60c0830161438b565b60c082015261448f60e0830161438b565b60e08201526101006144a281840161438b565b908201526101206144b483820161438b565b908201526101406144c683820161438b565b908201526101606144d883820161438b565b908201526101806144ea83820161438b565b908201526101a06144fc83820161438b565b908201526101c061450e83820161438b565b908201526101e061452083820161438b565b9082015261020061453283820161438b565b908201526102206145448382016143d2565b908201526102406145568382016143ec565b9082015292915050565b5f80828403610380811215614573575f80fd5b61012080821215614582575f80fd5b61458a61402e565b9150614595856143b1565b82526145a3602086016143b1565b60208301526145b4604086016143b1565b60408301526145c5606086016143b1565b60608301526145d6608086016143bc565b60808301526145e760a086016143c7565b60a08301526145f860c086016143bc565b60c083015261460960e086016143d2565b60e0830152610100808601518184015250819350614629868287016143f7565b925050509250929050565b5f60208284031215614644575f80fd5b5051919050565b5f808335601e19843603018112614660575f80fd5b8301803591506001600160401b03821115614679575f80fd5b6020019150368190038213156138d5575f80fd5b8681525f60018060a01b03808816602084015286604084015280861660608401525083608083015260e060a08301525f60e08301526101008060c08401526146d781840185613b87565b9998505050505050505050565b85815260018060a01b0385166020820152836040820152821515606082015260c060808201525f60c082015260e060a08201525f61472560e0830184613b87565b979650505050505050565b6001600160a01b03878116825286166020808301919091526040820186905260c06060830181905285519083018190525f918681019160e085019190845b8181101561478a5784518452938201939282019260010161476e565b5050509415156080840152505090151560a090910152949350505050565b5f602082840312156147b8575f80fd5b8151610b9d8161376d565b818103818111156107d6576107d66141fd565b5f80858511156147e4575f80fd5b838611156147f0575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561482a5780818660140360031b1b83161692505b505092915050565b5f60018060a01b03808516835260206040602085015260a084018286511660408601526001600160401b036020870151166060860152604086015192506060608086015280835180835260c0870191506020850194505f92505b808310156148af57845160ff16825293830193600192909201919083019061488c565b50979650505050505050565b808201808211156107d6576107d66141fd565b5f823561015e198336030181126148e3575f80fd5b9190910192915050565b92835260208301919091526001600160a01b0316604082015260600190565b5f8235607e19833603018112614920575f80fd5b90910192915050565b80356001600160681b038116811461378f575f80fd5b803561378f816143dd565b803562ffffff8116811461378f575f80fd5b803561378f8161437e565b5f60808084018335601e19853603018112614980575f80fd5b840160208181019135906001600160401b0382111561499d575f80fd5b6101c080830236038413156149b0575f80fd5b608089529382905260a0938489015f5b84811015614af5576149e2826149d588614929565b6001600160681b03169052565b6149ed848701613e5a565b63ffffffff16848301526040614a04878201613e5a565b63ffffffff16908301526060614a1b87820161493f565b61ffff1690830152614a2e868901613784565b6001600160a01b031688830152858701358783015260c0614a5081880161494a565b62ffffff169083015260e0614a66878201613e39565b60ff1690830152610100614a7b87820161495c565b151590830152610120614a8f87820161495c565b151590830152610140614aa387820161495c565b151590830152610160614ab787820161495c565b151590830152610180614acb87820161495c565b1515908301526101a0614adf87820161495c565b15159083015294820194908201906001016149c0565b50614b0260208a01613e5a565b63ffffffff811660208c01529650614b1c60408a01613e39565b60ff811660408c01529650614b3360608a01613784565b6001600160a01b03811660608c015296506146d7565b8035614b548161437e565b151582526020810135614b668161437e565b151560208301526040810135614b7b8161437e565b151560408301526060810135614b908161437e565b8015156060840152505050565b838152606060208201525f614bb28485613eb3565b6101606060850152614bc96101c085018284613ef4565b915050614bd96020860186613eb3565b605f1980868503016080870152614bf1848385613ef4565b9350614c006040890189613eb3565b93509150808685030160a0870152614c19848484613ef4565b9350614c2760608901613784565b6001600160a01b03811660c08801529250614c456080890189613eb3565b93509150808685030160e0870152614c5e848484613ef4565b9350614c6d60a089018961490c565b925080868503016101008701525050614c868282614967565b915050614c9560c08601613784565b6001600160a01b0316610120840152614cb5610140840160e08701614b49565b604092909201929092529392505050565b5f60208284031215614cd6575f80fd5b8135610b9d8161437e565b5f8235609e198336030181126148e3575f80fd5b5f60208284031215614d05575f80fd5b610b9d8261494a565b5f60208284031215614d1e575f80fd5b610b9d82614929565b5f60208284031215614d37575f80fd5b8135610b9d81613e49565b5f808335601e19843603018112614d57575f80fd5b8301803591506001600160401b03821115614d70575f80fd5b6020019150600581901b36038213156138d5575f80fd5b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015614e3d57888303603f19018552815180516001600160a01b031684528781015162ffffff1688850152868101516001600160681b03168785015260608082015163ffffffff908116918601919091526080808301519091169085015260a09081015160c091850182905290614e2981860183613cc4565b968901969450505090860190600101614dae565b509098975050505050505050565b5f8235607e198336030181126148e3575f80fd5b63ffffffff881681526001600160a01b038716602082015260a0604082018190525f90614e8f9083018789613ef4565b8281036060840152614ea2818688613ef4565b91505082608083015298975050505050505050565b5f823561011e198336030181126148e3575f80fd5b5f60208284031215614edc575f80fd5b8135610b9d816143dd565b5f808335601e19843603018112614efc575f80fd5b8301803591506001600160401b03821115614f15575f80fd5b602001915060c0810236038213156138d5575f80fd5b5f60208284031215614f3b575f80fd5b8135610b9d8161423e565b5f60208284031215614f56575f80fd5b8135610b9d8161425c565b60e081525f614f7360e083018a613b87565b60208301989098525061ffff95861660408201526001600160701b0394909416606085015263ffffffff9283166080850152911660a083015290911660c090910152919050565b5f808335601e19843603018112614fcf575f80fd5b8301803591506001600160401b03821115614fe8575f80fd5b60200191506060810236038213156138d5575f80fd5b608081525f6150106080830187613b87565b63ffffffff959095166020830152506001600160a01b039290921660408301526001600160681b0316606090910152919050565b805161ffff1682526020810151615061602084018261ffff169052565b506040810151615079604084018263ffffffff169052565b50606081015161508d606084018215159052565b5060808101516150a1608084018215159052565b5060a08101516150b560a084018215159052565b5060c08101516150c960c084018215159052565b5060e08101516150dd60e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff811682850152611189565b5f82825180855260208086019550808260051b8401018186015f5b8481101561525657858303601f190189528151805184528401516040858501819052815181860181905291860191606090818701905f5b8181101561523f578551805163ffffffff1684528a8101516001600160401b03168b850152858101516001600160a01b03908116878601528582015115158686015260808083015165ffffffffffff169086015260a09182015116908401529489019460c0909201916001016151ce565b50509b87019b955050509184019150600101615197565b5090979650505050505050565b5f815180845260208085019450602084015f5b83811015613cfc57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615276565b5f82825180855260208086019550808260051b8401018186015f5b8481101561525657858303601f19018952815180516001600160a01b0390811685528582015116858501526040808201516080828701819052919061530e83880182615263565b925050506060808301519250858203818701525061532c8183615263565b9a86019a94505050908301906001016152c7565b5f82825180855260208086019550808260051b8401018186015f5b8481101561525657601f198684030189528151805165ffffffffffff1684528481015163ffffffff908116868601526040808301516001600160701b031690860152606080830151909116908501526080808201516001600160a01b03169085015260a08082015161034091906153d482880182615044565b505060c0820151816103008701526153ee8287018261517c565b91505060e0820151915084810361032086015261540b81836152ac565b9a86019a945050509083019060010161535b565b5f808335601e19843603018112615434575f80fd5b83016020810192503590506001600160401b03811115615452575f80fd5b6060810236038213156138d5575f80fd5b5f8235603e19833603018112614920575f80fd5b5f8383855260208086019550808560051b830101845f5b8781101561525657848303601f190189526154a98288615463565b604080850182356154b98161376d565b6001600160a01b0381811688526154d2858a018661541f565b898b018690529384905292945060609291508288015f5b868110156155395783356154fc8161376d565b8316825260ff61550d858d01613e39565b168b8301528584013561551f81613e49565b63ffffffff168287015292840192908401906001016154e9565b509d89019d975050509386019350505060010161548e565b6001600160a01b038716815260a0602082018190525f906155759083018789613ef4565b82810360408401526155878187615340565b9050828103606084015261559c818587615477565b83810360809094019390935250505f81526020019695505050505050565b634e487b7160e01b5f52600160045260245ffd5b848152608060208201525f6155e66080830186615340565b82810360408401526155f9818587615477565b83810360609094019390935250505f8152602001949350505050565b838152604060208201525f610c88604083018486613ef4565b868152608060208201525f615647608083018789613ef4565b828103604084015261565a818688613ef4565b915050826060830152979650505050505050565b5f808335601e19843603018112615683575f80fd5b83016020810192503590506001600160401b038111156156a1575f80fd5b8060051b36038213156138d5575f80fd5b8183525f60208085019450825f5b85811015613cfc5781356156d381613e49565b63ffffffff1687526001600160681b036156ee838501614929565b16838801526040808301356157028161376d565b6001600160a01b03169088015260609687019691909101906001016156c0565b5f808335601e19843603018112615737575f80fd5b83016020810192503590506001600160401b03811115615755575f80fd5b60c0810236038213156138d5575f80fd5b80356001600160401b038116811461378f575f80fd5b8183525f60208085019450825f5b85811015613cfc57813561579d81613e49565b63ffffffff1687526001600160401b036157b8838501615766565b16838801526040808301356157cc8161376d565b6001600160a01b0316908801526060828101356157e88161437e565b1515908801526080828101356157fd8161423e565b65ffffffffffff169088015260a0615816838201613784565b6001600160a01b03169088015260c096870196919091019060010161578a565b5f8383855260208086019550808560051b830101845f5b8781101561525657848303601f1901895281353688900361011e19018112615873575f80fd5b87016101206158918561588584614251565b65ffffffffffff169052565b61589d8683018361541f565b82888801526158af83880182846156b2565b9250505060406158c081840161493f565b61ffff169086015260606158d683820184615722565b878403838901526158e884828461577c565b935050505060806158fa818401614270565b6001600160701b03169086015260a0615914838201613e5a565b63ffffffff169086015260c061592b838201613e5a565b63ffffffff169086015260e061594283820161493f565b61ffff169086015261010061595883820161493f565b61ffff1695019490945250978301979083019060010161584d565b5f808335601e19843603018112615988575f80fd5b83016020810192503590506001600160401b038111156159a6575f80fd5b8060061b36038213156138d5575f80fd5b8183525f60208085019450825f5b85811015613cfc5781356159d88161376d565b6001600160a01b03908116885282840135906159f38261376d565b168784015260409687019691909101906001016159c5565b5f60608084018335615a1c8161376d565b6001600160a01b03908116865260209085820135615a398161376d565b811660208801526040615a4e8782018861541f565b606060408b015294859052935f9060808a015b81831015615ab5578635615a748161376d565b8516815262ffffff615a8788880161494a565b168682015283870135615a9981613e49565b63ffffffff168185015295870195600192909201918701615a61565b9a9950505050505050505050565b5f8383855260208086019550808560051b830101845f5b8781101561525657848303601f19018952615af58288615463565b60408085018235615b058161376d565b6001600160a01b039081168752838801359036859003601e19018212615b29575f80fd5b9301878101939035906001600160401b03821115615b45575f80fd5b8160071b3603851315615b56575f80fd5b878901849052918190526060918288015f5b83811015615bc3578635615b7b8161376d565b83168252868b0135615b8c81613e49565b63ffffffff16828c015286860135615ba38161376d565b831682870152868501358583015260809687019690910190600101615b68565b509d89019d9750505093860193505050600101615ada565b5f615be6828361566e565b60408552615bf8604086018284615ac3565b915050602083013560208501528091505092915050565b60e081525f615c1e8a8b61490c565b60c060e0840152615c2f8182613eb3565b60806101a0860152615c4661022086018284613ef4565b915050615c566020830183613eb3565b61019f1980878503016101c0880152615c70848385613ef4565b9350615c7f6040860186613eb3565b9350915080878503016101e088015250615c9a838383613ef4565b925050506060820135610200850152615cb560208d01613e5a565b63ffffffff81166101008601529150615cd060408d01613784565b6001600160a01b0381166101208601529150615cef60608d018d61566e565b925060df198086840301610140870152615d0a838584615836565b9350615d1960808f018f615973565b93509150808685030161016087015250615d348383836159b7565b92505050615d4460a08c01613784565b6001600160a01b03166101808401528281036020840152615d66818a8c615477565b90508281036040840152615d7a8189615a0b565b90508281036060840152615d8e8188615bdb565b90508281036080840152615da28187615340565b9150508360a08301526146d760c08301846001600160a01b03169052565b838152606060208201525f615dd86060830185615bdb565b905060018060a01b0383166040830152949350505050565b848152836020820152606060408201525f612e46606083018486615ac3565b5f6020808385031215615e20575f80fd5b82516001600160401b03811115615e35575f80fd5b8301601f81018513615e45575f80fd5b8051615e536140f382614081565b81815260059190911b82018301908381019087831115615e71575f80fd5b928401925b82841015614725578351615e898161376d565b82529284019290840190615e76565b634e487b7160e01b5f52601260045260245ffd5b5f808335601e19843603018112615ec1575f80fd5b8301803591506001600160401b03821115615eda575f80fd5b6020019150600681901b36038213156138d5575f80fd5b5f60c08284031215615f01575f80fd5b60405160c081018181106001600160401b0382111715615f2357615f23613e25565b6040528235615f3181613e49565b8152615f3f60208401615766565b60208201526040830135615f528161376d565b60408201526060830135615f658161437e565b60608201526080830135615f788161423e565b608082015260a0830135615f8b8161376d565b60a08201529392505050565b5f8235603e198336030181126148e3575f80fdfea2646970667358221220a65dd1b0393318be33b98bea5093652be65932761f1712727bd697956b18864164736f6c63430008170033",
2822
+ "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBController\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeRevnetId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJB721TiersHookDeployer\",\"name\":\"hookDeployer\",\"type\":\"address\"},{\"internalType\":\"contract CTPublisher\",\"name\":\"publisher\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":[],\"name\":\"REVDeployer_AutoIssuanceBeneficiaryZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cashOutDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockTimestamp\",\"type\":\"uint256\"}],\"name\":\"REVDeployer_CashOutDelayNotFinished\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCashOutTaxRate\",\"type\":\"uint256\"}],\"name\":\"REVDeployer_CashOutsCantBeTurnedOffCompletely\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"}],\"name\":\"REVDeployer_LoanSourceDoesntMatchTerminalConfigurations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVDeployer_MustHaveSplits\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVDeployer_NothingToAutoIssue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVDeployer_RulesetDoesNotAllowDeployingSuckers\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stageId\",\"type\":\"uint256\"}],\"name\":\"REVDeployer_StageNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVDeployer_StageTimesMustIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVDeployer_StagesRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"REVDeployer_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"stageId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AutoIssue\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ticker\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct REVDescription\",\"name\":\"description\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"splitOperator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint48\",\"name\":\"startsAtOrAfter\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"uint104\",\"name\":\"count\",\"type\":\"uint104\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"internalType\":\"struct REVAutoIssuance[]\",\"name\":\"autoIssuances\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"splitPercent\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"projectId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\"},{\"internalType\":\"uint112\",\"name\":\"initialIssuance\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"issuanceCutFrequency\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"issuanceCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"extraMetadata\",\"type\":\"uint16\"}],\"internalType\":\"struct REVStageConfig[]\",\"name\":\"stageConfigurations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource[]\",\"name\":\"loanSources\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"loans\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct REVConfig\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"contract IJBRulesetDataHook\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"contract IJBBuybackHook\",\"name\":\"hookToConfigure\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"twapWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct REVBuybackPoolConfig[]\",\"name\":\"poolConfigurations\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct REVBuybackHookConfig\",\"name\":\"buybackHookConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"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\":\"deployerConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct REVSuckerDeploymentConfig\",\"name\":\"suckerDeploymentConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}],\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"projectId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\"}],\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\"}],\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"encodedConfigurationHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"DeployRevnet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"encodedConfigurationHash\",\"type\":\"bytes32\"},{\"components\":[{\"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\":\"deployerConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct REVSuckerDeploymentConfig\",\"name\":\"suckerDeploymentConfiguration\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"DeploySuckers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newSplitOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ReplaceSplitOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"additionalOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SetAdditionalOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashOutDelay\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SetCashOutDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"stageId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"StoreAutoIssuanceAmount\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CASH_OUT_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_REVNET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOOK_DEPLOYER\",\"outputs\":[{\"internalType\":\"contract IJB721TiersHookDeployer\",\"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\":[],\"name\":\"PUBLISHER\",\"outputs\":[{\"internalType\":\"contract CTPublisher\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUCKER_REGISTRY\",\"outputs\":[{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cashOutMetadata\",\"type\":\"bytes\"}],\"internalType\":\"struct JBAfterCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\"}],\"name\":\"afterCashOutRecordedWith\",\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stageId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"amountToAutoIssue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stageId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"autoIssueFor\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenAmount\",\"name\":\"surplus\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplus\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct JBBeforeCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\"}],\"name\":\"beforeCashOutRecordedWith\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct JBCashOutHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct JBBeforePayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\"}],\"name\":\"beforePayRecordedWith\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"buybackHookOf\",\"outputs\":[{\"internalType\":\"contract IJBRulesetDataHook\",\"name\":\"buybackHook\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"cashOutDelayOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cashOutDelay\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ticker\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct REVDescription\",\"name\":\"description\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"splitOperator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint48\",\"name\":\"startsAtOrAfter\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"uint104\",\"name\":\"count\",\"type\":\"uint104\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"internalType\":\"struct REVAutoIssuance[]\",\"name\":\"autoIssuances\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"splitPercent\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"projectId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\"},{\"internalType\":\"uint112\",\"name\":\"initialIssuance\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"issuanceCutFrequency\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"issuanceCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"extraMetadata\",\"type\":\"uint16\"}],\"internalType\":\"struct REVStageConfig[]\",\"name\":\"stageConfigurations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource[]\",\"name\":\"loanSources\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"loans\",\"type\":\"address\"}],\"internalType\":\"struct REVConfig\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\"}],\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"contract IJBRulesetDataHook\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"contract IJBBuybackHook\",\"name\":\"hookToConfigure\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"twapWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct REVBuybackPoolConfig[]\",\"name\":\"poolConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"struct REVBuybackHookConfig\",\"name\":\"buybackHookConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"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\":\"deployerConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct REVSuckerDeploymentConfig\",\"name\":\"suckerDeploymentConfiguration\",\"type\":\"tuple\"}],\"name\":\"deployFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"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\":\"deployerConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct REVSuckerDeploymentConfig\",\"name\":\"suckerDeploymentConfiguration\",\"type\":\"tuple\"}],\"name\":\"deploySuckersFor\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"suckers\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ticker\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct REVDescription\",\"name\":\"description\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"splitOperator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint48\",\"name\":\"startsAtOrAfter\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"chainId\",\"type\":\"uint32\"},{\"internalType\":\"uint104\",\"name\":\"count\",\"type\":\"uint104\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"internalType\":\"struct REVAutoIssuance[]\",\"name\":\"autoIssuances\",\"type\":\"tuple[]\"},{\"internalType\":\"uint16\",\"name\":\"splitPercent\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"projectId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\"},{\"internalType\":\"uint112\",\"name\":\"initialIssuance\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"issuanceCutFrequency\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"issuanceCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"extraMetadata\",\"type\":\"uint16\"}],\"internalType\":\"struct REVStageConfig[]\",\"name\":\"stageConfigurations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource[]\",\"name\":\"loanSources\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"loans\",\"type\":\"address\"}],\"internalType\":\"struct REVConfig\",\"name\":\"configuration\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\"}],\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"contract IJBRulesetDataHook\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"contract IJBBuybackHook\",\"name\":\"hookToConfigure\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"twapWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct REVBuybackPoolConfig[]\",\"name\":\"poolConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"struct REVBuybackHookConfig\",\"name\":\"buybackHookConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"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\":\"deployerConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct REVSuckerDeploymentConfig\",\"name\":\"suckerDeploymentConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseUri\",\"type\":\"string\"},{\"internalType\":\"contract IJB721TokenUriResolver\",\"name\":\"tokenUriResolver\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"contractUri\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"uint104\",\"name\":\"price\",\"type\":\"uint104\"},{\"internalType\":\"uint32\",\"name\":\"initialSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"votingUnits\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"reserveFrequency\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"reserveBeneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"encodedIPFSUri\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"category\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"discountPercent\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMint\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useReserveBeneficiaryAsDefault\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"transfersPausable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useVotingUnits\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"cannotBeRemoved\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"cannotIncreaseDiscountPercent\",\"type\":\"bool\"}],\"internalType\":\"struct JB721TierConfig[]\",\"name\":\"tiers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"}],\"internalType\":\"struct JB721InitTiersConfig\",\"name\":\"tiersConfig\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"reserveBeneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"noNewTiersWithReserves\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"noNewTiersWithVotes\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"noNewTiersWithOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"preventOverspending\",\"type\":\"bool\"}],\"internalType\":\"struct JB721TiersHookFlags\",\"name\":\"flags\",\"type\":\"tuple\"}],\"internalType\":\"struct JBDeploy721TiersHookConfig\",\"name\":\"baseline721HookConfiguration\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"splitOperatorCanAdjustTiers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"splitOperatorCanUpdateMetadata\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"splitOperatorCanMint\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"splitOperatorCanIncreaseDiscountPercent\",\"type\":\"bool\"}],\"internalType\":\"struct REVDeploy721TiersHookConfig\",\"name\":\"tiered721HookConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint24\",\"name\":\"category\",\"type\":\"uint24\"},{\"internalType\":\"uint104\",\"name\":\"minimumPrice\",\"type\":\"uint104\"},{\"internalType\":\"uint32\",\"name\":\"minimumTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maximumTotalSupply\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"allowedAddresses\",\"type\":\"address[]\"}],\"internalType\":\"struct REVCroptopAllowedPost[]\",\"name\":\"allowedPosts\",\"type\":\"tuple[]\"}],\"name\":\"deployWith721sFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"contract IJB721TiersHook\",\"name\":\"hook\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}],\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"hasMintPermissionFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"hashedEncodedConfigurationOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedEncodedConfiguration\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isSplitOperatorOf\",\"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\"}],\"name\":\"loansOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newSplitOperator\",\"type\":\"address\"}],\"name\":\"setSplitOperatorOf\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"tiered721HookOf\",\"outputs\":[{\"internalType\":\"contract IJB721TiersHook\",\"name\":\"tiered721Hook\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"afterCashOutRecordedWith((address,uint256,uint256,uint256,(address,uint8,uint32,uint256),(address,uint8,uint32,uint256),uint256,address,bytes,bytes))\":{\"params\":{\"context\":\"Cash out context passed in by the terminal.\"}},\"autoIssueFor(uint256,uint256,address)\":{\"params\":{\"beneficiary\":\"The address to auto-mint tokens to.\",\"revnetId\":\"The ID of the revnet to auto-mint tokens from.\",\"stageId\":\"The ID of the stage auto-mint tokens are available from.\"}},\"beforeCashOutRecordedWith((address,address,uint256,uint256,uint256,uint256,(address,uint8,uint32,uint256),bool,uint256,bytes))\":{\"details\":\"This function is part of `IJBRulesetDataHook`, and gets called before the revnet processes a cash out.If a sucker is cashing out, no taxes or fees are imposed.\",\"params\":{\"context\":\"Standard Juicebox cash out context. See `JBBeforeCashOutRecordedContext`.\"},\"returns\":{\"cashOutCount\":\"The number of revnet tokens that are cashed out.\",\"cashOutTaxRate\":\"The cash out tax rate, which influences the amount of terminal tokens which get cashed out.\",\"hookSpecifications\":\"The amount of funds and the data to send to cash out hooks (this contract).\",\"totalSupply\":\"The total revnet token supply.\"}},\"beforePayRecordedWith((address,address,(address,uint8,uint32,uint256),uint256,uint256,address,uint256,uint256,bytes))\":{\"details\":\"This function is part of `IJBRulesetDataHook`, and gets called before the revnet processes a payment.\",\"params\":{\"context\":\"Standard Juicebox payment context. See `JBBeforePayRecordedContext`.\"},\"returns\":{\"hookSpecifications\":\"Amounts (out of what's being paid in) to be sent to pay hooks instead of being paid into the revnet. Useful for automatically routing funds from a treasury as payments come in.\",\"weight\":\"The weight which revnet tokens are minted relative to. This can be used to customize how many tokens get minted by a payment.\"}},\"constructor\":{\"params\":{\"controller\":\"The controller to use for launching and operating the Juicebox projects which will be revnets.\",\"feeRevnetId\":\"The Juicebox project ID of the revnet that will receive fees.\",\"hookDeployer\":\"The deployer to use for revnet's tiered ERC-721 hooks.\",\"publisher\":\"The croptop publisher revnets can use to publish ERC-721 posts to their tiered ERC-721 hooks.\",\"suckerRegistry\":\"The registry to use for deploying and tracking each revnet's suckers.\",\"trustedForwarder\":\"The trusted forwarder for the ERC2771Context.\"}},\"deployFor(uint256,((string,string,string,bytes32),uint32,address,(uint48,(uint32,uint104,address)[],uint16,(uint32,uint64,address,bool,uint48,address)[],uint112,uint32,uint32,uint16,uint16)[],(address,address)[],address),(address,(address,uint8,uint32)[])[],(address,address,(address,uint24,uint32)[]),((address,(address,uint32,address,uint256)[])[],bytes32))\":{\"params\":{\"buybackHookConfiguration\":\"The buyback hook and pools to set up for the revnet. The buyback hook buys tokens from a Uniswap pool if minting new tokens would be more expensive.\",\"configuration\":\"Core revnet configuration. See `REVConfig`.\",\"revnetId\":\"The ID of the Juicebox project to turn into a revnet. Send 0 to deploy a new revnet.\",\"suckerDeploymentConfiguration\":\"The suckers to set up for the revnet. Suckers facilitate cross-chain token transfers between peer revnets on different networks.\",\"terminalConfigurations\":\"The terminals to set up for the revnet. Used for payments and cash outs.\"},\"returns\":{\"_0\":\"revnetId The ID of the newly created revnet.\"}},\"deploySuckersFor(uint256,((address,(address,uint32,address,uint256)[])[],bytes32))\":{\"details\":\"Only the revnet's split operator can deploy new suckers.\",\"params\":{\"revnetId\":\"The ID of the revnet to deploy suckers for. See `_makeRulesetConfigurations(…)` for encoding details. Clients can read the encoded configuration from the `DeployRevnet` event emitted by this contract.\",\"suckerDeploymentConfiguration\":\"The suckers to set up for the revnet.\"}},\"deployWith721sFor(uint256,((string,string,string,bytes32),uint32,address,(uint48,(uint32,uint104,address)[],uint16,(uint32,uint64,address,bool,uint48,address)[],uint112,uint32,uint32,uint16,uint16)[],(address,address)[],address),(address,(address,uint8,uint32)[])[],(address,address,(address,uint24,uint32)[]),((address,(address,uint32,address,uint256)[])[],bytes32),((string,string,string,address,string,((uint104,uint32,uint32,uint16,address,bytes32,uint24,uint8,bool,bool,bool,bool,bool,bool)[],uint32,uint8,address),address,(bool,bool,bool,bool)),bytes32,bool,bool,bool,bool),(uint24,uint104,uint32,uint32,address[])[])\":{\"params\":{\"allowedPosts\":\"Restrictions on which croptop posts are allowed on the revnet's ERC-721 tiers.\",\"buybackHookConfiguration\":\"The buyback hook and pools to set up for the revnet. The buyback hook buys tokens from a Uniswap pool if minting new tokens would be more expensive.\",\"configuration\":\"Core revnet configuration. See `REVConfig`.\",\"revnetId\":\"The ID of the Juicebox project to turn into a revnet. Send 0 to deploy a new revnet.\",\"suckerDeploymentConfiguration\":\"The suckers to set up for the revnet. Suckers facilitate cross-chain token transfers between peer revnets on different networks.\",\"terminalConfigurations\":\"The terminals to set up for the revnet. Used for payments and cash outs.\",\"tiered721HookConfiguration\":\"How to set up the tiered ERC-721 hook for the revnet.\"},\"returns\":{\"_0\":\"revnetId The ID of the newly created revnet.\",\"hook\":\"The address of the tiered ERC-721 hook that was deployed for the revnet.\"}},\"hasMintPermissionFor(uint256,(uint48,uint48,uint48,uint48,uint32,uint112,uint32,address,uint256),address)\":{\"details\":\"Required by the `IJBRulesetDataHook` interface.\",\"params\":{\"addr\":\"The address to check the mint permission of.\",\"revnetId\":\"The ID of the revnet to check permissions for.\",\"ruleset\":\"The ruleset to check the mint permission for.\"},\"returns\":{\"_0\":\"flag A flag indicating whether the address has permission to mint the revnet's tokens on-demand.\"}},\"isSplitOperatorOf(uint256,address)\":{\"params\":{\"addr\":\"The address to check.\",\"revnetId\":\"The ID of the revnet.\"},\"returns\":{\"_0\":\"flag A flag indicating whether the address is the revnet's split operator.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Make sure this contract can only receive project NFTs from `JBProjects`.\"},\"setSplitOperatorOf(uint256,address)\":{\"details\":\"Only a revnet's current split operator can set a new split operator.\",\"params\":{\"newSplitOperator\":\"The new split operator's address.\",\"revnetId\":\"The ID of the revnet to set the split operator of.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See `IERC165.supportsInterface`.\",\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"CASH_OUT_DELAY()\":{\"notice\":\"The number of seconds until a revnet's participants can cash out, starting from the time when that revnet is deployed to a new network. - Only applies to existing revnets which are deploying onto a new network. - To prevent liquidity/arbitrage issues which might arise when an existing revnet adds a brand-new treasury.\"},\"CONTROLLER()\":{\"notice\":\"The controller used to create and manage Juicebox projects for revnets.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for Juicebox projects (and revnets).\"},\"FEE()\":{\"notice\":\"The cash out fee (as a fraction out of `JBConstants.MAX_FEE`). Cashout fees are paid to the revnet with the `FEE_REVNET_ID`.\"},\"FEE_REVNET_ID()\":{\"notice\":\"The Juicebox project ID of the revnet that receives cash out fees.\"},\"HOOK_DEPLOYER()\":{\"notice\":\"Deploys tiered ERC-721 hooks for revnets.\"},\"PERMISSIONS()\":{\"notice\":\"Stores Juicebox project (and revnet) access permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent Juicebox project (and revnet) ownership and transfers.\"},\"PUBLISHER()\":{\"notice\":\"Manages the publishing of ERC-721 posts to revnet's tiered ERC-721 hooks.\"},\"SUCKER_REGISTRY()\":{\"notice\":\"Deploys and tracks suckers for revnets.\"},\"afterCashOutRecordedWith((address,uint256,uint256,uint256,(address,uint8,uint32,uint256),(address,uint8,uint32,uint256),uint256,address,bytes,bytes))\":{\"notice\":\"Processes the fee from a cash out.\"},\"amountToAutoIssue(uint256,uint256,address)\":{\"notice\":\"The number of revnet tokens which can be \\\"auto-minted\\\" (minted without payments) for a specific beneficiary during a stage. Think of this as a per-stage premint.\"},\"autoIssueFor(uint256,uint256,address)\":{\"notice\":\"Auto-mint a revnet's tokens from a stage for a beneficiary.\"},\"beforeCashOutRecordedWith((address,address,uint256,uint256,uint256,uint256,(address,uint8,uint32,uint256),bool,uint256,bytes))\":{\"notice\":\"Determine how a cash out from a revnet should be processed.\"},\"beforePayRecordedWith((address,address,(address,uint8,uint32,uint256),uint256,uint256,address,uint256,uint256,bytes))\":{\"notice\":\"Before a revnet processes an incoming payment, determine the weight and pay hooks to use.\"},\"buybackHookOf(uint256)\":{\"notice\":\"Each revnet's buyback data hook. These return buyback hook data.\"},\"cashOutDelayOf(uint256)\":{\"notice\":\"The timestamp of when cashouts will become available to a specific revnet's participants.\"},\"deployFor(uint256,((string,string,string,bytes32),uint32,address,(uint48,(uint32,uint104,address)[],uint16,(uint32,uint64,address,bool,uint48,address)[],uint112,uint32,uint32,uint16,uint16)[],(address,address)[],address),(address,(address,uint8,uint32)[])[],(address,address,(address,uint24,uint32)[]),((address,(address,uint32,address,uint256)[])[],bytes32))\":{\"notice\":\"Launch a revnet, or convert an existing Juicebox project into a revnet.\"},\"deploySuckersFor(uint256,((address,(address,uint32,address,uint256)[])[],bytes32))\":{\"notice\":\"Deploy new suckers for an existing revnet.\"},\"deployWith721sFor(uint256,((string,string,string,bytes32),uint32,address,(uint48,(uint32,uint104,address)[],uint16,(uint32,uint64,address,bool,uint48,address)[],uint112,uint32,uint32,uint16,uint16)[],(address,address)[],address),(address,(address,uint8,uint32)[])[],(address,address,(address,uint24,uint32)[]),((address,(address,uint32,address,uint256)[])[],bytes32),((string,string,string,address,string,((uint104,uint32,uint32,uint16,address,bytes32,uint24,uint8,bool,bool,bool,bool,bool,bool)[],uint32,uint8,address),address,(bool,bool,bool,bool)),bytes32,bool,bool,bool,bool),(uint24,uint104,uint32,uint32,address[])[])\":{\"notice\":\"Launch a revnet which sells tiered ERC-721s and (optionally) allows croptop posts to its ERC-721 tiers.\"},\"hasMintPermissionFor(uint256,(uint48,uint48,uint48,uint48,uint32,uint112,uint32,address,uint256),address)\":{\"notice\":\"A flag indicating whether an address has permission to mint a revnet's tokens on-demand.\"},\"hashedEncodedConfigurationOf(uint256)\":{\"notice\":\"The hashed encoded configuration of each revnet.\"},\"isSplitOperatorOf(uint256,address)\":{\"notice\":\"A flag indicating whether an address is a revnet's split operator.\"},\"loansOf(uint256)\":{\"notice\":\"Each revnet's loan contract.\"},\"setSplitOperatorOf(uint256,address)\":{\"notice\":\"Change a revnet's split operator.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates if this contract adheres to the specified interface.\"},\"tiered721HookOf(uint256)\":{\"notice\":\"Each revnet's tiered ERC-721 hook.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/REVDeployer.sol\":\"REVDeployer\"},\"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/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"]},\"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/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/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/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/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/@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/REVDeployer.sol\":{\"keccak256\":\"0x820ce844d69d77b5108bc02c01be91f4c088b1152c2b5f5c235823d8c61e1aa9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70a6b492b6cd37e36694389c239ba8ea5da4e0c6fab66a74c076a27e4c904cc\",\"dweb:/ipfs/QmThZrFKHxrCGyFqtvgFNP3FiNShGwwUM622iiA8YGY3Aq\"]},\"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}",
2823
+ "gitCommit": "f2d3b9e48d34c4c7b1b3b360032750c1dde1aeec",
2824
+ "history": []
2825
+ }