-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathsafe.ts
More file actions
955 lines (955 loc) · 98.9 KB
/
Copy pathsafe.ts
File metadata and controls
955 lines (955 loc) · 98.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
export const SAFE_ARTIFACTS = {
Safe: {
address: "0x41675C099F32341bf84BFc5382aF534df5C7461a",
abi: [
{inputs: [], stateMutability: "nonpayable", type: "constructor"},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
],
name: "AddedOwner",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "approvedHash",
type: "bytes32",
},
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
],
name: "ApproveHash",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "handler",
type: "address",
},
],
name: "ChangedFallbackHandler",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "guard",
type: "address",
},
],
name: "ChangedGuard",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint256",
name: "threshold",
type: "uint256",
},
],
name: "ChangedThreshold",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "module",
type: "address",
},
],
name: "DisabledModule",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "module",
type: "address",
},
],
name: "EnabledModule",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "txHash",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "payment",
type: "uint256",
},
],
name: "ExecutionFailure",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "module",
type: "address",
},
],
name: "ExecutionFromModuleFailure",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "module",
type: "address",
},
],
name: "ExecutionFromModuleSuccess",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "txHash",
type: "bytes32",
},
{
indexed: false,
internalType: "uint256",
name: "payment",
type: "uint256",
},
],
name: "ExecutionSuccess",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
],
name: "RemovedOwner",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
],
name: "SafeReceived",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "initiator",
type: "address",
},
{
indexed: false,
internalType: "address[]",
name: "owners",
type: "address[]",
},
{
indexed: false,
internalType: "uint256",
name: "threshold",
type: "uint256",
},
{
indexed: false,
internalType: "address",
name: "initializer",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "fallbackHandler",
type: "address",
},
],
name: "SafeSetup",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "msgHash",
type: "bytes32",
},
],
name: "SignMsg",
type: "event",
},
{stateMutability: "nonpayable", type: "fallback"},
{
inputs: [],
name: "VERSION",
outputs: [{internalType: "string", name: "", type: "string"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "owner", type: "address"},
{internalType: "uint256", name: "_threshold", type: "uint256"},
],
name: "addOwnerWithThreshold",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "bytes32", name: "hashToApprove", type: "bytes32"},
],
name: "approveHash",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "", type: "address"},
{internalType: "bytes32", name: "", type: "bytes32"},
],
name: "approvedHashes",
outputs: [{internalType: "uint256", name: "", type: "uint256"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "uint256", name: "_threshold", type: "uint256"},
],
name: "changeThreshold",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "bytes32", name: "dataHash", type: "bytes32"},
{internalType: "bytes", name: "data", type: "bytes"},
{internalType: "bytes", name: "signatures", type: "bytes"},
{
internalType: "uint256",
name: "requiredSignatures",
type: "uint256",
},
],
name: "checkNSignatures",
outputs: [],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "bytes32", name: "dataHash", type: "bytes32"},
{internalType: "bytes", name: "data", type: "bytes"},
{internalType: "bytes", name: "signatures", type: "bytes"},
],
name: "checkSignatures",
outputs: [],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "prevModule", type: "address"},
{internalType: "address", name: "module", type: "address"},
],
name: "disableModule",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "domainSeparator",
outputs: [{internalType: "bytes32", name: "", type: "bytes32"}],
stateMutability: "view",
type: "function",
},
{
inputs: [{internalType: "address", name: "module", type: "address"}],
name: "enableModule",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{
internalType: "enum Enum.Operation",
name: "operation",
type: "uint8",
},
{internalType: "uint256", name: "safeTxGas", type: "uint256"},
{internalType: "uint256", name: "baseGas", type: "uint256"},
{internalType: "uint256", name: "gasPrice", type: "uint256"},
{internalType: "address", name: "gasToken", type: "address"},
{internalType: "address", name: "refundReceiver", type: "address"},
{internalType: "uint256", name: "_nonce", type: "uint256"},
],
name: "encodeTransactionData",
outputs: [{internalType: "bytes", name: "", type: "bytes"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{
internalType: "enum Enum.Operation",
name: "operation",
type: "uint8",
},
{internalType: "uint256", name: "safeTxGas", type: "uint256"},
{internalType: "uint256", name: "baseGas", type: "uint256"},
{internalType: "uint256", name: "gasPrice", type: "uint256"},
{internalType: "address", name: "gasToken", type: "address"},
{
internalType: "address payable",
name: "refundReceiver",
type: "address",
},
{internalType: "bytes", name: "signatures", type: "bytes"},
],
name: "execTransaction",
outputs: [{internalType: "bool", name: "success", type: "bool"}],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{
internalType: "enum Enum.Operation",
name: "operation",
type: "uint8",
},
],
name: "execTransactionFromModule",
outputs: [{internalType: "bool", name: "success", type: "bool"}],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{
internalType: "enum Enum.Operation",
name: "operation",
type: "uint8",
},
],
name: "execTransactionFromModuleReturnData",
outputs: [
{internalType: "bool", name: "success", type: "bool"},
{internalType: "bytes", name: "returnData", type: "bytes"},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "getChainId",
outputs: [{internalType: "uint256", name: "", type: "uint256"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "start", type: "address"},
{internalType: "uint256", name: "pageSize", type: "uint256"},
],
name: "getModulesPaginated",
outputs: [
{internalType: "address[]", name: "array", type: "address[]"},
{internalType: "address", name: "next", type: "address"},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getOwners",
outputs: [{internalType: "address[]", name: "", type: "address[]"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "uint256", name: "offset", type: "uint256"},
{internalType: "uint256", name: "length", type: "uint256"},
],
name: "getStorageAt",
outputs: [{internalType: "bytes", name: "", type: "bytes"}],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getThreshold",
outputs: [{internalType: "uint256", name: "", type: "uint256"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{
internalType: "enum Enum.Operation",
name: "operation",
type: "uint8",
},
{internalType: "uint256", name: "safeTxGas", type: "uint256"},
{internalType: "uint256", name: "baseGas", type: "uint256"},
{internalType: "uint256", name: "gasPrice", type: "uint256"},
{internalType: "address", name: "gasToken", type: "address"},
{internalType: "address", name: "refundReceiver", type: "address"},
{internalType: "uint256", name: "_nonce", type: "uint256"},
],
name: "getTransactionHash",
outputs: [{internalType: "bytes32", name: "", type: "bytes32"}],
stateMutability: "view",
type: "function",
},
{
inputs: [{internalType: "address", name: "module", type: "address"}],
name: "isModuleEnabled",
outputs: [{internalType: "bool", name: "", type: "bool"}],
stateMutability: "view",
type: "function",
},
{
inputs: [{internalType: "address", name: "owner", type: "address"}],
name: "isOwner",
outputs: [{internalType: "bool", name: "", type: "bool"}],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "nonce",
outputs: [{internalType: "uint256", name: "", type: "uint256"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "prevOwner", type: "address"},
{internalType: "address", name: "owner", type: "address"},
{internalType: "uint256", name: "_threshold", type: "uint256"},
],
name: "removeOwner",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{internalType: "address", name: "handler", type: "address"}],
name: "setFallbackHandler",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{internalType: "address", name: "guard", type: "address"}],
name: "setGuard",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address[]", name: "_owners", type: "address[]"},
{internalType: "uint256", name: "_threshold", type: "uint256"},
{internalType: "address", name: "to", type: "address"},
{internalType: "bytes", name: "data", type: "bytes"},
{internalType: "address", name: "fallbackHandler", type: "address"},
{internalType: "address", name: "paymentToken", type: "address"},
{internalType: "uint256", name: "payment", type: "uint256"},
{
internalType: "address payable",
name: "paymentReceiver",
type: "address",
},
],
name: "setup",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{internalType: "bytes32", name: "", type: "bytes32"}],
name: "signedMessages",
outputs: [{internalType: "uint256", name: "", type: "uint256"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "targetContract", type: "address"},
{internalType: "bytes", name: "calldataPayload", type: "bytes"},
],
name: "simulateAndRevert",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "prevOwner", type: "address"},
{internalType: "address", name: "oldOwner", type: "address"},
{internalType: "address", name: "newOwner", type: "address"},
],
name: "swapOwner",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{stateMutability: "payable", type: "receive"},
],
bytecode:
"0x6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a03231461156b578063f698da25146115bc578063f8dc5dd9146115e7578063ffa1ad741461166257610226565b8063e19a9dd9146112bf578063e318b52b14611310578063e75235b8146113a1578063e86637db146113cc57610226565b8063cc2f8452116100d1578063cc2f84521461100c578063d4d9bdcd146110d9578063d8d11f7814611114578063e009cfde1461124e57610226565b8063affed0e014610d89578063b4faba0914610db4578063b63e800d14610e9c57610226565b80635624b25b1161016f5780636a7612021161013e5780636a761202146109895780637d83297414610b45578063934f3a1114610bb4578063a0e67e2b14610d1d57610226565b80635624b25b146107f05780635ae6bd37146108ae578063610b5925146108fd578063694e80c31461094e57610226565b80632f54bf6e116101ab5780632f54bf6e146104c85780633408e4701461052f578063468721a71461055a5780635229073f1461066f57610226565b80630d582f131461029357806312fb68e0146102ee5780632d9ad53d1461046157610226565b36610226573373ffffffffffffffffffffffffffffffffffffffff167f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d346040518082815260200191505060405180910390a2005b34801561023257600080fd5b5060007f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d560001b905080548061026757600080f35b36600080373360601b365260008060143601600080855af13d6000803e8061028e573d6000fd5b3d6000f35b34801561029f57600080fd5b506102ec600480360360408110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f2565b005b3480156102fa57600080fd5b5061045f6004803603608081101561031157600080fd5b81019080803590602001909291908035906020019064010000000081111561033857600080fd5b82018360208201111561034a57600080fd5b8035906020019184600183028401116401000000008311171561036c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103cf57600080fd5b8201836020820111156103e157600080fd5b8035906020019184600183028401116401000000008311171561040357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611ad8565b005b34801561046d57600080fd5b506104b06004803603602081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123d6565b60405180821515815260200191505060405180910390f35b3480156104d457600080fd5b50610517600480360360208110156104eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a8565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b5061054461257a565b6040518082815260200191505060405180910390f35b34801561056657600080fd5b506106576004803603608081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff169060200190929190505050612587565b60405180821515815260200191505060405180910390f35b34801561067b57600080fd5b5061076c6004803603608081101561069257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106d957600080fd5b8201836020820111156106eb57600080fd5b8035906020019184600183028401116401000000008311171561070d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff16906020019092919050505061278d565b60405180831515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107b4578082015181840152602081019050610799565b50505050905090810190601f1680156107e15780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156107fc57600080fd5b506108336004803603604081101561081357600080fd5b8101908080359060200190929190803590602001909291905050506127c3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610873578082015181840152602081019050610858565b50505050905090810190601f1680156108a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ba57600080fd5b506108e7600480360360208110156108d157600080fd5b810190808035906020019092919050505061284a565b6040518082815260200191505060405180910390f35b34801561090957600080fd5b5061094c6004803603602081101561092057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612862565b005b34801561095a57600080fd5b506109876004803603602081101561097157600080fd5b8101908080359060200190929190505050612bea565b005b610b2d60048036036101408110156109a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156109e757600080fd5b8201836020820111156109f957600080fd5b80359060200191846001830284011164010000000083111715610a1b57600080fd5b9091929391929390803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610aa757600080fd5b820183602082011115610ab957600080fd5b80359060200191846001830284011164010000000083111715610adb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612d24565b60405180821515815260200191505060405180910390f35b348015610b5157600080fd5b50610b9e60048036036040811015610b6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613253565b6040518082815260200191505060405180910390f35b348015610bc057600080fd5b50610d1b60048036036060811015610bd757600080fd5b810190808035906020019092919080359060200190640100000000811115610bfe57600080fd5b820183602082011115610c1057600080fd5b80359060200191846001830284011164010000000083111715610c3257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c9557600080fd5b820183602082011115610ca757600080fd5b80359060200191846001830284011164010000000083111715610cc957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613278565b005b348015610d2957600080fd5b50610d32613307565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d75578082015181840152602081019050610d5a565b505050509050019250505060405180910390f35b348015610d9557600080fd5b50610d9e6134b0565b6040518082815260200191505060405180910390f35b348015610dc057600080fd5b50610e9a60048036036040811015610dd757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610e1457600080fd5b820183602082011115610e2657600080fd5b80359060200191846001830284011164010000000083111715610e4857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506134b6565b005b348015610ea857600080fd5b5061100a6004803603610100811015610ec057600080fd5b8101908080359060200190640100000000811115610edd57600080fd5b820183602082011115610eef57600080fd5b80359060200191846020830284011164010000000083111715610f1157600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610f5c57600080fd5b820183602082011115610f6e57600080fd5b80359060200191846001830284011164010000000083111715610f9057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134d8565b005b34801561101857600080fd5b506110656004803603604081101561102f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613696565b60405180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019060200280838360005b838110156110c45780820151818401526020810190506110a9565b50505050905001935050505060405180910390f35b3480156110e557600080fd5b50611112600480360360208110156110fc57600080fd5b81019080803590602001909291905050506139f9565b005b34801561112057600080fd5b50611238600480360361014081101561113857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561117f57600080fd5b82018360208201111561119157600080fd5b803590602001918460018302840111640100000000831117156111b357600080fd5b9091929391929390803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b98565b6040518082815260200191505060405180910390f35b34801561125a57600080fd5b506112bd6004803603604081101561127157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bc5565b005b3480156112cb57600080fd5b5061130e600480360360208110156112e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f4c565b005b34801561131c57600080fd5b5061139f6004803603606081101561133357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614138565b005b3480156113ad57600080fd5b506113b6614796565b6040518082815260200191505060405180910390f35b3480156113d857600080fd5b506114f060048036036101408110156113f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561143757600080fd5b82018360208201111561144957600080fd5b8035906020019184600183028401116401000000008311171561146b57600080fd5b9091929391929390803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506147a0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611530578082015181840152602081019050611515565b50505050905090810190601f16801561155d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561157757600080fd5b506115ba6004803603602081101561158e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614948565b005b3480156115c857600080fd5b506115d161499f565b6040518082815260200191505060405180910390f35b3480156115f357600080fd5b506116606004803603606081101561160a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a1d565b005b34801561166e57600080fd5b50611677614e46565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156116b757808201518184015260208101905061169c565b50505050905090810190601f1680156116e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6116fa614e7f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117645750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561179c57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61180e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff167f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2660405160405180910390a28060045414611ad457611ad381612bea565b5b5050565b611aec604182614f2290919063ffffffff16565b82511015611b62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000808060008060005b868110156123ca57611b7e8882614f5c565b80945081955082965050505060008460ff1614156120035789898051906020012014611c12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323700000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8260001c9450611c2c604188614f2290919063ffffffff16565b8260001c1015611ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8751611cbd60208460001c614f8b90919063ffffffff16565b1115611d31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006020838a01015190508851611d6782611d5960208760001c614f8b90919063ffffffff16565b614f8b90919063ffffffff16565b1115611ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60606020848b010190506320c13b0b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff166320c13b0b8d846040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e7d578082015181840152602081019050611e62565b50505050905090810190601f168015611eaa5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611ee3578082015181840152602081019050611ec8565b50505050905090810190601f168015611f105780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b158015611f2f57600080fd5b505afa158015611f43573d6000803e3d6000fd5b505050506040513d6020811015611f5957600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ffc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050612248565b60018460ff161415612117578260001c94508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806120a057506000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c81526020019081526020016000205414155b612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612247565b601e8460ff1611156121df5760018a60405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012060048603858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156121ce573d6000803e3d6000fd5b505050602060405103519450612246565b60018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612239573d6000803e3d6000fd5b5050506020604051035194505b5b5b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611801561230f5750600073ffffffffffffffffffffffffffffffffffffffff16600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156123485750600173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b6123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323600000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8495508080600101915050611b6c565b50505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff16141580156124a15750600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125735750600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000804690508091505090565b6000600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156126525750600073ffffffffffffffffffffffffffffffffffffffff16600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6126f1858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614faa565b90508015612741573373ffffffffffffffffffffffffffffffffffffffff167f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb860405160405180910390a2612785565b3373ffffffffffffffffffffffffffffffffffffffff167facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37560405160405180910390a25b949350505050565b6000606061279d86868686612587565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006020830267ffffffffffffffff811180156127e157600080fd5b506040519080825280601f01601f1916602001820160405280156128145781602001600182028036833780820191505090505b50905060005b8381101561283f5780850154806020830260208501015250808060010191505061281a565b508091505092915050565b60076020528060005260406000206000915090505481565b61286a614e7f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156128d45750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b612946576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844060405160405180910390a250565b612bf2614e7f565b600354811115612c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001811015612ce1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806004819055507f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c936004546040518082815260200191505060405180910390a150565b6000806000612d3e8e8e8e8e8e8e8e8e8e8e6005546147a0565b905060056000815480929190600101919050555080805190602001209150612d67828286613278565b506000612d72614ff6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f58578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b8152600401808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c8152602001806020018a6001811115612e1557fe5b81526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018473ffffffffffffffffffffffffffffffffffffffff16815260200183810383528d8d82818152602001925080828437600081840152601f19601f820116905080830192505050838103825285818151815260200191508051906020019080838360005b83811015612ee7578082015181840152602081019050612ecc565b50505050905090810190601f168015612f145780820380516001836020036101000a031916815260200191505b509e505050505050505050505050505050600060405180830381600087803b158015612f3f57600080fd5b505af1158015612f53573d6000803e3d6000fd5b505050505b6101f4612f7f6109c48b01603f60408d0281612f7057fe5b0461502790919063ffffffff16565b015a1015612ff5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005a905061305e8f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e60008d14613053578e613059565b6109c45a035b614faa565b93506130735a8261504190919063ffffffff16565b90508380613082575060008a14155b8061308e575060008814155b613100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008089111561311a57613117828b8b8b8b615061565b90505b841561315d57837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040518082815260200191505060405180910390a2613196565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d23826040518082815260200191505060405180910390a25b5050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613242578073ffffffffffffffffffffffffffffffffffffffff16639327136883856040518363ffffffff1660e01b815260040180838152602001821515815260200192505050600060405180830381600087803b15801561322957600080fd5b505af115801561323d573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b60006004549050600081116132f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61330184848484611ad8565b50505050565b6060600060035467ffffffffffffffff8111801561332457600080fd5b506040519080825280602002602001820160405280156133535781602001602082028036833780820191505090505b50905060008060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146134a757808383815181106133fe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506133bd565b82935050505090565b60055481565b600080825160208401855af4806000523d6020523d600060403e60403d016000fd5b6135238a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505089615267565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135615761356084615767565b5b6135af8787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050615838565b60008211156135c9576135c782600060018685615061565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b8960405180806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252878782818152602001925060200280828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a250505050505050505050565b60606000600173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806136da57506136d9846123d6565b5b61374c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083116137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303600000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8267ffffffffffffffff811180156137d957600080fd5b506040519080825280602002602001820160405280156138085781602001602082028036833780820191505090505b5091506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156138da5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156138e557508381105b156139a057818382815181106138f757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508080600101915050613870565b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146139ee578260018203815181106139e357fe5b602002602001015191505b808352509250929050565b600073ffffffffffffffffffffffffffffffffffffffff16600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330333000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16817ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c60405160405180910390a350565b6000613bad8c8c8c8c8c8c8c8c8c8c8c6147a0565b8051906020012090509b9a5050505050505050505050565b613bcd614e7f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613c375750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b613ca9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613da9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427660405160405180910390a25050565b613f54614e7f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146140c6578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060206040518083038186803b15801561401857600080fd5b505afa15801561402c573d6000803e3d6000fd5b505050506040513d602081101561404257600080fd5b81019080805190602001909291905050506140c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475333303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b60007f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c860001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa260405160405180910390a25050565b614140614e7f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156141aa5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156141e257503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b614254576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614355576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156143bf5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b614431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614531576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf60405160405180910390a28073ffffffffffffffffffffffffffffffffffffffff167f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2660405160405180910390a2505050565b6000600454905090565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405180838380828437808301925050509250505060405180910390208c8c8c8c8c8c8c604051602001808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200189815260200188600181111561483157fe5b81526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019b505050505050505050505050604051602081830303815290604052805190602001209050601960f81b600160f81b6148bd61499f565b8360405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018381526020018281526020019450505050506040516020818303038152906040529150509b9a5050505050505050505050565b614950614e7f565b61495981615767565b8073ffffffffffffffffffffffffffffffffffffffff167f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b060405160405180910390a250565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b6149cd61257a565b30604051602001808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405160208183030381529060405280519060200120905090565b614a25614e7f565b806001600354031015614aa0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015614b0a5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b614b7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614c7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508173ffffffffffffffffffffffffffffffffffffffff167ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf60405160405180910390a28060045414614e4157614e4081612bea565b5b505050565b6040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614f20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330333100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b565b600080831415614f355760009050614f56565b6000828402905082848281614f4657fe5b0414614f5157600080fd5b809150505b92915050565b60008060008360410260208101860151925060408101860151915060ff60418201870151169350509250925092565b600080828401905083811015614fa057600080fd5b8091505092915050565b6000600180811115614fb857fe5b836001811115614fc457fe5b1415614fdd576000808551602087018986f49050614fed565b600080855160208701888a87f190505b95945050505050565b6000807f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c860001b9050805491505090565b6000818310156150375781615039565b825b905092915050565b60008282111561505057600080fd5b600082840390508091505092915050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461509e57826150a0565b325b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156151b85761510a3a86106150e7573a6150e9565b855b6150fc888a614f8b90919063ffffffff16565b614f2290919063ffffffff16565b91508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050506151b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61525d565b6151dd856151cf888a614f8b90919063ffffffff16565b614f2290919063ffffffff16565b91506151ea848284615b0e565b61525c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b5095945050505050565b6000600454146152df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8151811115615356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018110156153cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006001905060005b83518110156156d35760008482815181106153ed57fe5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156154615750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561549957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156154d157508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b615543576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092505080806001019150506153d6565b506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825160038190555081600481905550505050565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415615809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475334303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60007f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d560001b90508181555050565b600073ffffffffffffffffffffffffffffffffffffffff1660016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461593a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614615b0a576159f682615bd2565b615a68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b615a978260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614faa565b615b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b5050565b60008063a9059cbb8484604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050602060008251602084016000896127105a03f13d60008114615bb55760208114615bbd5760009350615bc8565b819350615bc8565b600051158215171593505b5050509392505050565b600080823b90506000811191505091905056fea264697066735822122057398fa72884cf9a6cb78aab2fb58a6b927f0e9d97d75b015daaee0959a153bf64736f6c63430007060033",
},
SafeProxyFactory: {
address: "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
abi: [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "contract SafeProxy",
name: "proxy",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "singleton",
type: "address",
},
],
name: "ProxyCreation",
type: "event",
},
{
inputs: [
{internalType: "address", name: "_singleton", type: "address"},
{internalType: "bytes", name: "initializer", type: "bytes"},
{internalType: "uint256", name: "saltNonce", type: "uint256"},
],
name: "createChainSpecificProxyWithNonce",
outputs: [
{internalType: "contract SafeProxy", name: "proxy", type: "address"},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "_singleton", type: "address"},
{internalType: "bytes", name: "initializer", type: "bytes"},
{internalType: "uint256", name: "saltNonce", type: "uint256"},
{
internalType: "contract IProxyCreationCallback",
name: "callback",
type: "address",
},
],
name: "createProxyWithCallback",
outputs: [
{internalType: "contract SafeProxy", name: "proxy", type: "address"},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "_singleton", type: "address"},
{internalType: "bytes", name: "initializer", type: "bytes"},
{internalType: "uint256", name: "saltNonce", type: "uint256"},
],
name: "createProxyWithNonce",
outputs: [
{internalType: "contract SafeProxy", name: "proxy", type: "address"},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "getChainId",
outputs: [{internalType: "uint256", name: "", type: "uint256"}],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "proxyCreationCode",
outputs: [{internalType: "bytes", name: "", type: "bytes"}],
stateMutability: "pure",
type: "function",
},
],
bytecode:
"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631688f0b91461005c5780633408e4701461016b57806353e5d93514610189578063d18af54d1461020c578063ec9e80bb1461033b575b600080fd5b61013f6004803603606081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156100af57600080fd5b8201836020820111156100c157600080fd5b803590602001918460018302840111640100000000831117156100e357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061044a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101736104fe565b6040518082815260200191505060405180910390f35b61019161050b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d15780820151818401526020810190506101b6565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f6004803603608081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025f57600080fd5b82018360208201111561027157600080fd5b8035906020019184600183028401116401000000008311171561029357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610536565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61041e6004803603606081101561035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460018302840111640100000000831117156103c257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506106e5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008083805190602001208360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012090506104908585836107a8565b91508173ffffffffffffffffffffffffffffffffffffffff167f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e23586604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2509392505050565b6000804690508091505090565b60606040518060200161051d906109c5565b6020820181038252601f19601f82011660405250905090565b6000808383604051602001808381526020018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401925050506040516020818303038152906040528051906020012060001c905061059186868361044a565b9150600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146106dc578273ffffffffffffffffffffffffffffffffffffffff16631e52b518838888886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610674578082015181840152602081019050610659565b50505050905090810190601f1680156106a15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b505050505b50949350505050565b6000808380519060200120836106f96104fe565b60405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905061073a8585836107a8565b91508173ffffffffffffffffffffffffffffffffffffffff167f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e23586604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2509392505050565b60006107b3846109b2565b610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640081525060200191505060405180910390fd5b600060405180602001610837906109c5565b6020820181038252601f19601f820116604052508573ffffffffffffffffffffffffffffffffffffffff166040516020018083805190602001908083835b602083106108985780518252602082019150602081019050602083039250610875565b6001836020036101000a038019825116818451168082178552505050505050905001828152602001925050506040516020818303038152906040529050828151826020016000f59150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610984576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f437265617465322063616c6c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b6000845111156109aa5760008060008651602088016000875af114156109a957600080fd5b5b509392505050565b600080823b905060008111915050919050565b6101e6806109d38339019056fe608060405234801561001057600080fd5b506040516101e63803806101e68339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806101c46022913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060ab806101196000396000f3fe608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea264697066735822122003d1488ee65e08fa41e58e888a9865554c535f2c77126a82cb4c0f917f31441364736f6c63430007060033496e76616c69642073696e676c65746f6e20616464726573732070726f7669646564a26469706673582212200fd975ca8e62d9bf08aa3d09c74b9bdc9d7acba7621835be4187989ddd0e54b164736f6c63430007060033",
},
Safe4337Module: {
address: "0xa581c4A4DB7175302464fF3C06380BC3270b4037",
abi: [
{
inputs: [
{internalType: "address", name: "entryPoint", type: "address"},
],
stateMutability: "nonpayable",
type: "constructor",
},
{
inputs: [],
name: "SUPPORTED_ENTRYPOINT",
outputs: [{internalType: "address", name: "", type: "address"}],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "domainSeparator",
outputs: [{internalType: "bytes32", name: "", type: "bytes32"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "contract Safe", name: "safe", type: "address"},
{internalType: "bytes", name: "message", type: "bytes"},
],
name: "encodeMessageDataForSafe",
outputs: [{internalType: "bytes", name: "", type: "bytes"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{internalType: "uint8", name: "operation", type: "uint8"},
],
name: "executeUserOp",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{internalType: "address", name: "to", type: "address"},
{internalType: "uint256", name: "value", type: "uint256"},
{internalType: "bytes", name: "data", type: "bytes"},
{internalType: "uint8", name: "operation", type: "uint8"},
],
name: "executeUserOpWithErrorString",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{internalType: "bytes", name: "message", type: "bytes"}],
name: "getMessageHash",
outputs: [{internalType: "bytes32", name: "", type: "bytes32"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "contract Safe", name: "safe", type: "address"},
{internalType: "bytes", name: "message", type: "bytes"},
],
name: "getMessageHashForSafe",
outputs: [{internalType: "bytes32", name: "", type: "bytes32"}],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getModules",
outputs: [{internalType: "address[]", name: "", type: "address[]"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
components: [
{internalType: "address", name: "sender", type: "address"},
{internalType: "uint256", name: "nonce", type: "uint256"},
{internalType: "bytes", name: "initCode", type: "bytes"},
{internalType: "bytes", name: "callData", type: "bytes"},
{internalType: "uint256", name: "callGasLimit", type: "uint256"},
{
internalType: "uint256",
name: "verificationGasLimit",
type: "uint256",
},
{
internalType: "uint256",
name: "preVerificationGas",
type: "uint256",
},
{internalType: "uint256", name: "maxFeePerGas", type: "uint256"},
{
internalType: "uint256",
name: "maxPriorityFeePerGas",
type: "uint256",
},
{internalType: "bytes", name: "paymasterAndData", type: "bytes"},
{internalType: "bytes", name: "signature", type: "bytes"},
],
internalType: "struct UserOperation",
name: "userOp",
type: "tuple",
},
],
name: "getOperationHash",
outputs: [
{internalType: "bytes32", name: "operationHash", type: "bytes32"},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "bytes32", name: "_dataHash", type: "bytes32"},
{internalType: "bytes", name: "_signature", type: "bytes"},
],
name: "isValidSignature",
outputs: [{internalType: "bytes4", name: "", type: "bytes4"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "bytes", name: "_data", type: "bytes"},
{internalType: "bytes", name: "_signature", type: "bytes"},
],
name: "isValidSignature",
outputs: [{internalType: "bytes4", name: "", type: "bytes4"}],
stateMutability: "view",
type: "function",
},
{
inputs: [
{internalType: "address", name: "", type: "address"},
{internalType: "address", name: "", type: "address"},
{internalType: "uint256[]", name: "", type: "uint256[]"},
{internalType: "uint256[]", name: "", type: "uint256[]"},
{internalType: "bytes", name: "", type: "bytes"},
],
name: "onERC1155BatchReceived",
outputs: [{internalType: "bytes4", name: "", type: "bytes4"}],
stateMutability: "pure",
type: "function",
},
{
inputs: [
{internalType: "address", name: "", type: "address"},
{internalType: "address", name: "", type: "address"},
{internalType: "uint256", name: "", type: "uint256"},
{internalType: "uint256", name: "", type: "uint256"},
{internalType: "bytes", name: "", type: "bytes"},
],
name: "onERC1155Received",
outputs: [{internalType: "bytes4", name: "", type: "bytes4"}],
stateMutability: "pure",
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: "pure",
type: "function",
},
{
inputs: [
{internalType: "address", name: "targetContract", type: "address"},
{internalType: "bytes", name: "calldataPayload", type: "bytes"},
],
name: "simulate",
outputs: [{internalType: "bytes", name: "response", type: "bytes"}],
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: "address", name: "", type: "address"},
{internalType: "address", name: "", type: "address"},
{internalType: "address", name: "", type: "address"},
{internalType: "uint256", name: "", type: "uint256"},
{internalType: "bytes", name: "", type: "bytes"},
{internalType: "bytes", name: "", type: "bytes"},
],
name: "tokensReceived",
outputs: [],
stateMutability: "pure",
type: "function",
},
{
inputs: [
{
components: [
{internalType: "address", name: "sender", type: "address"},
{internalType: "uint256", name: "nonce", type: "uint256"},
{internalType: "bytes", name: "initCode", type: "bytes"},
{internalType: "bytes", name: "callData", type: "bytes"},
{internalType: "uint256", name: "callGasLimit", type: "uint256"},
{
internalType: "uint256",
name: "verificationGasLimit",
type: "uint256",
},
{
internalType: "uint256",
name: "preVerificationGas",
type: "uint256",
},
{internalType: "uint256", name: "maxFeePerGas", type: "uint256"},
{
internalType: "uint256",
name: "maxPriorityFeePerGas",
type: "uint256",
},
{internalType: "bytes", name: "paymasterAndData", type: "bytes"},
{internalType: "bytes", name: "signature", type: "bytes"},
],
internalType: "struct UserOperation",
name: "userOp",
type: "tuple",
},
{internalType: "bytes32", name: "", type: "bytes32"},
{
internalType: "uint256",
name: "missingAccountFunds",
type: "uint256",
},
],
name: "validateUserOp",
outputs: [
{internalType: "uint256", name: "validationData", type: "uint256"},
],
stateMutability: "nonpayable",
type: "function",
},
],
bytecode:
"0x608060405234801561001057600080fd5b50600436106101355760003560e01c8063541d63c8116100b2578063b25f377611610081578063bd61951d11610066578063bd61951d14610347578063f23a6e611461035a578063f698da251461039357600080fd5b8063b25f3776146102f9578063bc197c811461030c57600080fd5b8063541d63c8146102ab5780636ac24784146102be5780637bb37428146102d1578063b2494df3146102e457600080fd5b8063150b7a021161010957806320c13b0b116100ee57806320c13b0b1461026557806323031640146102785780633a871cdd1461029857600080fd5b8063150b7a02146101e95780631626ba7e1461025257600080fd5b806223de291461013a57806301ffc9a7146101545780630a1028c41461017c578063137e051e1461019d575b600080fd5b610152610148366004611586565b5050505050505050565b005b610167610162366004611665565b6103ef565b60405190151581526020015b60405180910390f35b61018f61018a36600461179c565b6104d4565b604051908152602001610173565b6101c47f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278981565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b6102216101f73660046117d9565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610173565b61022161026036600461184c565b6104e0565b610221610273366004611898565b610601565b61028b6102863660046118fc565b6107d7565b60405161017391906119b0565b61018f6102a63660046119dc565b61090e565b6101526102b9366004611a2a565b610c95565b61018f6102cc3660046118fc565b610e1f565b6101526102df366004611a2a565b610e3a565b6102ec610ff0565b6040516101739190611a9c565b61018f610307366004611af6565b61109a565b61022161031a366004611b70565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b61028b610355366004611c0e565b6110bc565b610221610368366004611c4a565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61018f604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061048257507fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000145b806104ce57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006104ce3383610e1f565b60408051602080820186905282518083039091018152818301928390527f20c13b0b000000000000000000000000000000000000000000000000000000009092526000913391839183916320c13b0b916105409189908990604401611d0f565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190611d3f565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f20c13b0b00000000000000000000000000000000000000000000000000000000146105d35760006105f5565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b925050505b9392505050565b6000338161060f82866107d7565b80516020820120855191925090600003610725576040517f5ae6bd370000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff841690635ae6bd3790602401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190611d5c565b600003610720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f48617368206e6f7420617070726f76656400000000000000000000000000000060448201526064015b60405180910390fd5b6107ac565b6040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063934f3a119061077b90849086908a90600401611d75565b60006040518083038186803b15801561079357600080fd5b505afa1580156107a7573d6000803e3d6000fd5b505050505b507f20c13b0b0000000000000000000000000000000000000000000000000000000095945050505050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b8380519060200120604051602001610821929190918252602082015260400190565b604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190611d5c565b6040517fff00000000000000000000000000000000000000000000000000000000000000938416602082015292909116602183015260228201526042810182905260620160405160208183030381529060405291505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278973ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e737570706f7274656420656e74727920706f696e740000000000000000006044820152606401610717565b60006109e46020860186611da0565b905073ffffffffffffffffffffffffffffffffffffffff81163314610a65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c69642063616c6c65720000000000000000000000000000000000006044820152606401610717565b610a726060860186611dbd565b610a7b91611e22565b7fffffffff00000000000000000000000000000000000000000000000000000000167f7bb37428000000000000000000000000000000000000000000000000000000001480610b205750610ad26060860186611dbd565b610adb91611e22565b7fffffffff00000000000000000000000000000000000000000000000000000000167f541d63c800000000000000000000000000000000000000000000000000000000145b610bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f556e737570706f7274656420657865637574696f6e2066756e6374696f6e206960448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610717565b610bb58561111f565b91508215610c8d576040517f468721a700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789811660048301526024820185905260806044830152600060848301819052606483015282169063468721a79060a4016020604051808303816000875af1158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b9190611e7f565b505b509392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278973ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e737570706f7274656420656e74727920706f696e740000000000000000006044820152606401610717565b6040517f5229073f00000000000000000000000000000000000000000000000000000000815260009081903390635229073f90610da1908990899089908990600401611e9a565b6000604051808303816000875af1158015610dc0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e069190810190611ee3565b9150915081610e1757805160208201fd5b505050505050565b6000610e2b83836107d7565b80519060200120905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278973ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e737570706f7274656420656e74727920706f696e740000000000000000006044820152606401610717565b6040517f468721a7000000000000000000000000000000000000000000000000000000008152339063468721a790610f41908790879087908790600401611e9a565b6020604051808303816000875af1158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190611e7f565b610fea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f457865637574696f6e206661696c6564000000000000000000000000000000006044820152606401610717565b50505050565b6040517fcc2f845200000000000000000000000000000000000000000000000000000000815260016004820152600a60248201526060903390600090829063cc2f845290604401600060405180830381865afa158015611054573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c8d9190810190611f78565b6000806110a683611202565b5050505090508080519060200120915050919050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af1505060203d036040519150808201604052806020833e506000516105fa57805160208201fd5b60008060008036600061113187611202565b93985091965094509250905061114a6020880188611da0565b855160208701206040517f934f3a1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163934f3a11916111a99189908790879060040161203c565b60006040518083038186803b1580156111c157600080fd5b505afa9250505080156111d2575060015b6111e9576111e2600184866114e0565b95506111f8565b6111f5600084866114e0565b95505b5050505050919050565b606060008036818181611219610140890189611dbd565b909250905061122c600660008385612073565b6112359161209d565b60d01c9550611248600c60068385612073565b6112519161209d565b60d01c945061126381600c8185612073565b9350935050506000604051806101c001604052807f84aa190356f56b8c87825f54884392a9907c23ee0f8e1ea86336b763faf021bd81526020018860000160208101906112b09190611da0565b73ffffffffffffffffffffffffffffffffffffffff168152602001886020013581526020018880604001906112e59190611dbd565b6040516112f39291906120e3565b604051908190039020815260200161130e60608a018a611dbd565b60405161131c9291906120e3565b60405180910390208152602001886080013581526020018860a0013581526020018860c0013581526020018860e00135815260200188610100013581526020018880610120019061136d9190611dbd565b60405161137b9291906120e3565b6040805191829003909120825265ffffffffffff808916602084015287169082015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789166060909101526101c081209091507f19000000000000000000000000000000000000000000000000000000000000007f0100000000000000000000000000000000000000000000000000000000000000611480604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b6040517fff0000000000000000000000000000000000000000000000000000000000000093841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529650505091939590929450565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561150857600061150b565b60015b60ff161717949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461153a57600080fd5b50565b60008083601f84011261154f57600080fd5b50813567ffffffffffffffff81111561156757600080fd5b60208301915083602082850101111561157f57600080fd5b9250929050565b60008060008060008060008060c0898b0312156115a257600080fd5b88356115ad81611518565b975060208901356115bd81611518565b965060408901356115cd81611518565b955060608901359450608089013567ffffffffffffffff808211156115f157600080fd5b6115fd8c838d0161153d565b909650945060a08b013591508082111561161657600080fd5b506116238b828c0161153d565b999c989b5096995094979396929594505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461153a57600080fd5b60006020828403121561167757600080fd5b81356105fa81611637565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116f8576116f8611682565b604052919050565b600067ffffffffffffffff82111561171a5761171a611682565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261175757600080fd5b813561176a61176582611700565b6116b1565b81815284602083860101111561177f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156117ae57600080fd5b813567ffffffffffffffff8111156117c557600080fd5b6117d184828501611746565b949350505050565b6000806000806000608086880312156117f157600080fd5b85356117fc81611518565b9450602086013561180c81611518565b935060408601359250606086013567ffffffffffffffff81111561182f57600080fd5b61183b8882890161153d565b969995985093965092949392505050565b60008060006040848603121561186157600080fd5b83359250602084013567ffffffffffffffff81111561187f57600080fd5b61188b8682870161153d565b9497909650939450505050565b600080604083850312156118ab57600080fd5b823567ffffffffffffffff808211156118c357600080fd5b6118cf86838701611746565b935060208501359150808211156118e557600080fd5b506118f285828601611746565b9150509250929050565b6000806040838503121561190f57600080fd5b823561191a81611518565b9150602083013567ffffffffffffffff81111561193657600080fd5b6118f285828601611746565b60005b8381101561195d578181015183820152602001611945565b50506000910152565b6000815180845261197e816020860160208601611942565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105fa6020830184611966565b600061016082840312156119d657600080fd5b50919050565b6000806000606084860312156119f157600080fd5b833567ffffffffffffffff811115611a0857600080fd5b611a14868287016119c3565b9660208601359650604090950135949350505050565b60008060008060808587031215611a4057600080fd5b8435611a4b81611518565b935060208501359250604085013567ffffffffffffffff811115611a6e57600080fd5b611a7a87828801611746565b925050606085013560ff81168114611a9157600080fd5b939692955090935050565b6020808252825182820181905260009190848201906040850190845b81811015611aea57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611ab8565b50909695505050505050565b600060208284031215611b0857600080fd5b813567ffffffffffffffff811115611b1f57600080fd5b6117d1848285016119c3565b60008083601f840112611b3d57600080fd5b50813567ffffffffffffffff811115611b5557600080fd5b6020830191508360208260051b850101111561157f57600080fd5b60008060008060008060008060a0898b031215611b8c57600080fd5b8835611b9781611518565b97506020890135611ba781611518565b9650604089013567ffffffffffffffff80821115611bc457600080fd5b611bd08c838d01611b2b565b909850965060608b0135915080821115611be957600080fd5b611bf58c838d01611b2b565b909650945060808b013591508082111561161657600080fd5b600080600060408486031215611c2357600080fd5b8335611c2e81611518565b9250602084013567ffffffffffffffff81111561187f57600080fd5b60008060008060008060a08789031215611c6357600080fd5b8635611c6e81611518565b95506020870135611c7e81611518565b94506040870135935060608701359250608087013567ffffffffffffffff811115611ca857600080fd5b611cb489828a0161153d565b979a9699509497509295939492505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000611d226040830186611966565b8281036020840152611d35818587611cc6565b9695505050505050565b600060208284031215611d5157600080fd5b81516105fa81611637565b600060208284031215611d6e57600080fd5b5051919050565b838152606060208201526000611d8e6060830185611966565b8281036040840152611d358185611966565b600060208284031215611db257600080fd5b81356105fa81611518565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611df257600080fd5b83018035915067ffffffffffffffff821115611e0d57600080fd5b60200191503681900382131561157f57600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611e625780818660040360031b1b83161692505b505092915050565b80518015158114611e7a57600080fd5b919050565b600060208284031215611e9157600080fd5b6105fa82611e6a565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201526000611ecf6080830185611966565b905060ff8316606083015295945050505050565b60008060408385031215611ef657600080fd5b611eff83611e6a565b9150602083015167ffffffffffffffff811115611f1b57600080fd5b8301601f81018513611f2c57600080fd5b8051611f3a61176582611700565b818152866020838501011115611f4f57600080fd5b611f60826020830160208601611942565b8093505050509250929050565b8051611e7a81611518565b60008060408385031215611f8b57600080fd5b825167ffffffffffffffff80821115611fa357600080fd5b818501915085601f830112611fb757600080fd5b8151602082821115611fcb57611fcb611682565b8160051b9250611fdc8184016116b1565b8281529284018101928181019089851115611ff657600080fd5b948201945b84861015612020578551935061201084611518565b8382529482019490820190611ffb565b965061202f9050878201611f6d565b9450505050509250929050565b8481526060602082015260006120556060830186611966565b8281036040840152612068818587611cc6565b979650505050505050565b6000808585111561208357600080fd5b8386111561209057600080fd5b5050820193919092039150565b7fffffffffffff00000000000000000000000000000000000000000000000000008135818116916006851015611e625760069490940360031b84901b1690921692915050565b818382376000910190815291905056fea264697066735822122073b2f06a452916e599e0f5dddf12e282a21ffb83a30811b2fbe9fd7ce48dc3a064736f6c63430008170033",
},
AddModulesLib: {
address: "0x8EcD4ec46D4D2a6B64fE960B3D64e8B94B2234eb",
abi: [
{
inputs: [
{internalType: "address[]", name: "modules", type: "address[]"},
],
name: "enableModules",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
],
bytecode:
"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80638d0dc49f14610030575b600080fd5b61004361003e36600461011a565b610045565b005b805b8015610115573063610b592584846100606001866101be565b81811061006f5761006f6101d7565b90506020020160208101906100849190610206565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381600087803b1580156100ea57600080fd5b505af11580156100fe573d6000803e3d6000fd5b50505050808061010d90610243565b915050610047565b505050565b6000806020838503121561012d57600080fd5b823567ffffffffffffffff8082111561014557600080fd5b818501915085601f83011261015957600080fd5b81358181111561016857600080fd5b8660208260051b850101111561017d57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101d1576101d161018f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561021857600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461023c57600080fd5b9392505050565b6000816102525761025261018f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122022cfe34f0de69ff92f9c49103555ee9f9c6ff5b0582e357de6f64f2a2bc215aa64736f6c63430008170033",
},
} as const;