@sudobility/contracts 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/artifacts/contracts/Mailer.sol/Mailer.d.ts +963 -0
  2. package/artifacts/contracts/Mailer.sol/Mailer.dbg.json +1 -1
  3. package/artifacts/contracts/Mailer.sol/Mailer.json +95 -2
  4. package/artifacts/contracts/Mailer.sol/artifacts.d.ts +21 -0
  5. package/artifacts/contracts/MockUSDC.sol/MockUSDC.d.ts +284 -0
  6. package/artifacts/contracts/MockUSDC.sol/MockUSDC.dbg.json +1 -1
  7. package/artifacts/contracts/MockUSDC.sol/artifacts.d.ts +21 -0
  8. package/artifacts/contracts/interfaces/IERC20.sol/IERC20.d.ts +157 -0
  9. package/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json +1 -1
  10. package/artifacts/contracts/interfaces/IERC20.sol/artifacts.d.ts +21 -0
  11. package/dist/evm/typechain-types/Mailer.d.ts +51 -2
  12. package/dist/evm/typechain-types/Mailer.d.ts.map +1 -1
  13. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts +72 -1
  14. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  15. package/dist/evm/typechain-types/factories/Mailer__factory.js +94 -1
  16. package/dist/evm/typechain-types/factories/Mailer__factory.js.map +1 -1
  17. package/dist/unified/typechain-types/Mailer.d.ts +51 -2
  18. package/dist/unified/typechain-types/Mailer.d.ts.map +1 -1
  19. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts +72 -1
  20. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  21. package/dist/unified/typechain-types/factories/Mailer__factory.js +94 -1
  22. package/dist/unified/typechain-types/factories/Mailer__factory.js.map +1 -1
  23. package/dist/unified-esm/typechain-types/Mailer.d.ts +51 -2
  24. package/dist/unified-esm/typechain-types/Mailer.d.ts.map +1 -1
  25. package/dist/unified-esm/typechain-types/factories/Mailer__factory.d.ts +72 -1
  26. package/dist/unified-esm/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  27. package/dist/unified-esm/typechain-types/factories/Mailer__factory.js +94 -1
  28. package/dist/unified-esm/typechain-types/factories/Mailer__factory.js.map +1 -1
  29. package/package.json +7 -3
  30. package/programs/mailer/src/lib.rs +314 -78
  31. package/typechain-types/Mailer.ts +104 -0
  32. package/typechain-types/factories/Mailer__factory.ts +94 -1
@@ -32,10 +32,13 @@ export interface MailerInterface extends Interface {
32
32
  | "claimExpiredShares"
33
33
  | "claimOwnerShare"
34
34
  | "claimRecipientShare"
35
+ | "clearCustomFeePercentage"
36
+ | "customFeeDiscount"
35
37
  | "delegateTo"
36
38
  | "delegationFee"
37
39
  | "distributeClaimableFunds"
38
40
  | "emergencyUnpause"
41
+ | "getCustomFeePercentage"
39
42
  | "getDelegationFee"
40
43
  | "getFee"
41
44
  | "getOwnerClaimable"
@@ -52,6 +55,7 @@ export interface MailerInterface extends Interface {
52
55
  | "sendPrepared"
53
56
  | "sendPreparedToEmailAddress"
54
57
  | "sendToEmailAddress"
58
+ | "setCustomFeePercentage"
55
59
  | "setDelegationFee"
56
60
  | "setFee"
57
61
  | "unpause"
@@ -62,6 +66,7 @@ export interface MailerInterface extends Interface {
62
66
  nameOrSignatureOrTopic:
63
67
  | "ContractPaused"
64
68
  | "ContractUnpaused"
69
+ | "CustomFeePercentageSet"
65
70
  | "DelegationFeeUpdated"
66
71
  | "DelegationSet"
67
72
  | "EmergencyUnpaused"
@@ -101,6 +106,14 @@ export interface MailerInterface extends Interface {
101
106
  functionFragment: "claimRecipientShare",
102
107
  values?: undefined
103
108
  ): string;
109
+ encodeFunctionData(
110
+ functionFragment: "clearCustomFeePercentage",
111
+ values: [AddressLike]
112
+ ): string;
113
+ encodeFunctionData(
114
+ functionFragment: "customFeeDiscount",
115
+ values: [AddressLike]
116
+ ): string;
104
117
  encodeFunctionData(
105
118
  functionFragment: "delegateTo",
106
119
  values: [AddressLike]
@@ -117,6 +130,10 @@ export interface MailerInterface extends Interface {
117
130
  functionFragment: "emergencyUnpause",
118
131
  values?: undefined
119
132
  ): string;
133
+ encodeFunctionData(
134
+ functionFragment: "getCustomFeePercentage",
135
+ values: [AddressLike]
136
+ ): string;
120
137
  encodeFunctionData(
121
138
  functionFragment: "getDelegationFee",
122
139
  values?: undefined
@@ -163,6 +180,10 @@ export interface MailerInterface extends Interface {
163
180
  functionFragment: "sendToEmailAddress",
164
181
  values: [string, string, string]
165
182
  ): string;
183
+ encodeFunctionData(
184
+ functionFragment: "setCustomFeePercentage",
185
+ values: [AddressLike, BigNumberish]
186
+ ): string;
166
187
  encodeFunctionData(
167
188
  functionFragment: "setDelegationFee",
168
189
  values: [BigNumberish]
@@ -198,6 +219,14 @@ export interface MailerInterface extends Interface {
198
219
  functionFragment: "claimRecipientShare",
199
220
  data: BytesLike
200
221
  ): Result;
222
+ decodeFunctionResult(
223
+ functionFragment: "clearCustomFeePercentage",
224
+ data: BytesLike
225
+ ): Result;
226
+ decodeFunctionResult(
227
+ functionFragment: "customFeeDiscount",
228
+ data: BytesLike
229
+ ): Result;
201
230
  decodeFunctionResult(functionFragment: "delegateTo", data: BytesLike): Result;
202
231
  decodeFunctionResult(
203
232
  functionFragment: "delegationFee",
@@ -211,6 +240,10 @@ export interface MailerInterface extends Interface {
211
240
  functionFragment: "emergencyUnpause",
212
241
  data: BytesLike
213
242
  ): Result;
243
+ decodeFunctionResult(
244
+ functionFragment: "getCustomFeePercentage",
245
+ data: BytesLike
246
+ ): Result;
214
247
  decodeFunctionResult(
215
248
  functionFragment: "getDelegationFee",
216
249
  data: BytesLike
@@ -254,6 +287,10 @@ export interface MailerInterface extends Interface {
254
287
  functionFragment: "sendToEmailAddress",
255
288
  data: BytesLike
256
289
  ): Result;
290
+ decodeFunctionResult(
291
+ functionFragment: "setCustomFeePercentage",
292
+ data: BytesLike
293
+ ): Result;
257
294
  decodeFunctionResult(
258
295
  functionFragment: "setDelegationFee",
259
296
  data: BytesLike
@@ -283,6 +320,19 @@ export namespace ContractUnpausedEvent {
283
320
  export type LogDescription = TypedLogDescription<Event>;
284
321
  }
285
322
 
323
+ export namespace CustomFeePercentageSetEvent {
324
+ export type InputTuple = [account: AddressLike, percentage: BigNumberish];
325
+ export type OutputTuple = [account: string, percentage: bigint];
326
+ export interface OutputObject {
327
+ account: string;
328
+ percentage: bigint;
329
+ }
330
+ export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
331
+ export type Filter = TypedDeferredTopicFilter<Event>;
332
+ export type Log = TypedEventLog<Event>;
333
+ export type LogDescription = TypedLogDescription<Event>;
334
+ }
335
+
286
336
  export namespace DelegationFeeUpdatedEvent {
287
337
  export type InputTuple = [oldFee: BigNumberish, newFee: BigNumberish];
288
338
  export type OutputTuple = [oldFee: bigint, newFee: bigint];
@@ -562,6 +612,14 @@ export interface Mailer extends BaseContract {
562
612
 
563
613
  claimRecipientShare: TypedContractMethod<[], [void], "nonpayable">;
564
614
 
615
+ clearCustomFeePercentage: TypedContractMethod<
616
+ [account: AddressLike],
617
+ [void],
618
+ "nonpayable"
619
+ >;
620
+
621
+ customFeeDiscount: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
622
+
565
623
  delegateTo: TypedContractMethod<
566
624
  [delegate: AddressLike],
567
625
  [void],
@@ -578,6 +636,12 @@ export interface Mailer extends BaseContract {
578
636
 
579
637
  emergencyUnpause: TypedContractMethod<[], [void], "nonpayable">;
580
638
 
639
+ getCustomFeePercentage: TypedContractMethod<
640
+ [account: AddressLike],
641
+ [bigint],
642
+ "view"
643
+ >;
644
+
581
645
  getDelegationFee: TypedContractMethod<[], [bigint], "view">;
582
646
 
583
647
  getFee: TypedContractMethod<[], [bigint], "view">;
@@ -655,6 +719,12 @@ export interface Mailer extends BaseContract {
655
719
  "nonpayable"
656
720
  >;
657
721
 
722
+ setCustomFeePercentage: TypedContractMethod<
723
+ [account: AddressLike, percentage: BigNumberish],
724
+ [void],
725
+ "nonpayable"
726
+ >;
727
+
658
728
  setDelegationFee: TypedContractMethod<
659
729
  [usdcAmount: BigNumberish],
660
730
  [void],
@@ -689,6 +759,12 @@ export interface Mailer extends BaseContract {
689
759
  getFunction(
690
760
  nameOrSignature: "claimRecipientShare"
691
761
  ): TypedContractMethod<[], [void], "nonpayable">;
762
+ getFunction(
763
+ nameOrSignature: "clearCustomFeePercentage"
764
+ ): TypedContractMethod<[account: AddressLike], [void], "nonpayable">;
765
+ getFunction(
766
+ nameOrSignature: "customFeeDiscount"
767
+ ): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
692
768
  getFunction(
693
769
  nameOrSignature: "delegateTo"
694
770
  ): TypedContractMethod<[delegate: AddressLike], [void], "nonpayable">;
@@ -701,6 +777,9 @@ export interface Mailer extends BaseContract {
701
777
  getFunction(
702
778
  nameOrSignature: "emergencyUnpause"
703
779
  ): TypedContractMethod<[], [void], "nonpayable">;
780
+ getFunction(
781
+ nameOrSignature: "getCustomFeePercentage"
782
+ ): TypedContractMethod<[account: AddressLike], [bigint], "view">;
704
783
  getFunction(
705
784
  nameOrSignature: "getDelegationFee"
706
785
  ): TypedContractMethod<[], [bigint], "view">;
@@ -794,6 +873,13 @@ export interface Mailer extends BaseContract {
794
873
  [void],
795
874
  "nonpayable"
796
875
  >;
876
+ getFunction(
877
+ nameOrSignature: "setCustomFeePercentage"
878
+ ): TypedContractMethod<
879
+ [account: AddressLike, percentage: BigNumberish],
880
+ [void],
881
+ "nonpayable"
882
+ >;
797
883
  getFunction(
798
884
  nameOrSignature: "setDelegationFee"
799
885
  ): TypedContractMethod<[usdcAmount: BigNumberish], [void], "nonpayable">;
@@ -821,6 +907,13 @@ export interface Mailer extends BaseContract {
821
907
  ContractUnpausedEvent.OutputTuple,
822
908
  ContractUnpausedEvent.OutputObject
823
909
  >;
910
+ getEvent(
911
+ key: "CustomFeePercentageSet"
912
+ ): TypedContractEvent<
913
+ CustomFeePercentageSetEvent.InputTuple,
914
+ CustomFeePercentageSetEvent.OutputTuple,
915
+ CustomFeePercentageSetEvent.OutputObject
916
+ >;
824
917
  getEvent(
825
918
  key: "DelegationFeeUpdated"
826
919
  ): TypedContractEvent<
@@ -936,6 +1029,17 @@ export interface Mailer extends BaseContract {
936
1029
  ContractUnpausedEvent.OutputObject
937
1030
  >;
938
1031
 
1032
+ "CustomFeePercentageSet(address,uint256)": TypedContractEvent<
1033
+ CustomFeePercentageSetEvent.InputTuple,
1034
+ CustomFeePercentageSetEvent.OutputTuple,
1035
+ CustomFeePercentageSetEvent.OutputObject
1036
+ >;
1037
+ CustomFeePercentageSet: TypedContractEvent<
1038
+ CustomFeePercentageSetEvent.InputTuple,
1039
+ CustomFeePercentageSetEvent.OutputTuple,
1040
+ CustomFeePercentageSetEvent.OutputObject
1041
+ >;
1042
+
939
1043
  "DelegationFeeUpdated(uint256,uint256)": TypedContractEvent<
940
1044
  DelegationFeeUpdatedEvent.InputTuple,
941
1045
  DelegationFeeUpdatedEvent.OutputTuple,
@@ -58,6 +58,11 @@ const _abi = [
58
58
  name: "InvalidAddress",
59
59
  type: "error",
60
60
  },
61
+ {
62
+ inputs: [],
63
+ name: "InvalidPercentage",
64
+ type: "error",
65
+ },
61
66
  {
62
67
  inputs: [],
63
68
  name: "MathOverflow",
@@ -95,6 +100,25 @@ const _abi = [
95
100
  name: "ContractUnpaused",
96
101
  type: "event",
97
102
  },
103
+ {
104
+ anonymous: false,
105
+ inputs: [
106
+ {
107
+ indexed: true,
108
+ internalType: "address",
109
+ name: "account",
110
+ type: "address",
111
+ },
112
+ {
113
+ indexed: false,
114
+ internalType: "uint256",
115
+ name: "percentage",
116
+ type: "uint256",
117
+ },
118
+ ],
119
+ name: "CustomFeePercentageSet",
120
+ type: "event",
121
+ },
98
122
  {
99
123
  anonymous: false,
100
124
  inputs: [
@@ -455,6 +479,38 @@ const _abi = [
455
479
  stateMutability: "nonpayable",
456
480
  type: "function",
457
481
  },
482
+ {
483
+ inputs: [
484
+ {
485
+ internalType: "address",
486
+ name: "account",
487
+ type: "address",
488
+ },
489
+ ],
490
+ name: "clearCustomFeePercentage",
491
+ outputs: [],
492
+ stateMutability: "nonpayable",
493
+ type: "function",
494
+ },
495
+ {
496
+ inputs: [
497
+ {
498
+ internalType: "address",
499
+ name: "",
500
+ type: "address",
501
+ },
502
+ ],
503
+ name: "customFeeDiscount",
504
+ outputs: [
505
+ {
506
+ internalType: "uint256",
507
+ name: "",
508
+ type: "uint256",
509
+ },
510
+ ],
511
+ stateMutability: "view",
512
+ type: "function",
513
+ },
458
514
  {
459
515
  inputs: [
460
516
  {
@@ -501,6 +557,25 @@ const _abi = [
501
557
  stateMutability: "nonpayable",
502
558
  type: "function",
503
559
  },
560
+ {
561
+ inputs: [
562
+ {
563
+ internalType: "address",
564
+ name: "account",
565
+ type: "address",
566
+ },
567
+ ],
568
+ name: "getCustomFeePercentage",
569
+ outputs: [
570
+ {
571
+ internalType: "uint256",
572
+ name: "",
573
+ type: "uint256",
574
+ },
575
+ ],
576
+ stateMutability: "view",
577
+ type: "function",
578
+ },
504
579
  {
505
580
  inputs: [],
506
581
  name: "getDelegationFee",
@@ -780,6 +855,24 @@ const _abi = [
780
855
  stateMutability: "nonpayable",
781
856
  type: "function",
782
857
  },
858
+ {
859
+ inputs: [
860
+ {
861
+ internalType: "address",
862
+ name: "account",
863
+ type: "address",
864
+ },
865
+ {
866
+ internalType: "uint256",
867
+ name: "percentage",
868
+ type: "uint256",
869
+ },
870
+ ],
871
+ name: "setCustomFeePercentage",
872
+ outputs: [],
873
+ stateMutability: "nonpayable",
874
+ type: "function",
875
+ },
783
876
  {
784
877
  inputs: [
785
878
  {
@@ -829,7 +922,7 @@ const _abi = [
829
922
  ] as const;
830
923
 
831
924
  const _bytecode =
832
- "0x60c0604052620186a0600055629896806001553480156200001f57600080fd5b5060405162001fdf38038062001fdf8339810160408190526200004291620000b4565b6001600160a01b03821615806200006057506001600160a01b038116155b156200007f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000ec565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060408385031215620000c857600080fd5b620000d38362000097565b9150620000e36020840162000097565b90509250929050565b60805160a051611e3a620001a5600039600081816103140152818161042c015281816104d601528181610846015281816108e701528181610b1301528181610eb101528181610f5c01528181611233015281816112cb01526113740152600081816101e4015281816105080152818161063d0152818161071d01528181610a3301528181610c2701528181610d0701528181611111015281816112fd015281816114830152818161163701526117870152611e3a6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638456cb5911610104578063b187bd26116100a2578063d157868711610071578063d1578687146103ea578063ebf77de0146103f2578063f2292f0914610405578063fa26bb271461040e57600080fd5b8063b187bd261461039e578063c5f0a58f146103a9578063cd564ccd146103b2578063ced72f87146103e257600080fd5b80639ded51dd116100de5780639ded51dd1461033e578063a3a336bf14610346578063ac637c7a14610382578063ae39279f1461039557600080fd5b80638456cb59146103075780638da5cb5b1461030f5780638db3c5fd1461033657600080fd5b806355bfc81c1161017c57806369fe0e2d1161014b57806369fe0e2d146102c65780636a1c6e78146102d9578063720e586f146102e15780637494b323146102f457600080fd5b806355bfc81c14610270578063569d71111461028357806358545014146102965780635c975abb146102a957600080fd5b80633a8c3d6a116101b85780633a8c3d6a146102455780633f4ba83a146102585780634a4e3bd5146102605780634b0b1b8b1461026857600080fd5b806311eac855146101df57806321241dfe14610223578063358cbf0a1461023b575b600080fd5b6102067f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61022d624f1a0081565b60405190815260200161021a565b610243610421565b005b610243610253366004611a05565b6105d1565b61024361083b565b6102436108dc565b61024361097d565b61024361027e366004611a80565b610b08565b610243610291366004611a99565b610bbb565b6102436102a4366004611b40565b610e1c565b6005546102b69060ff1681565b604051901515815260200161021a565b6102436102d4366004611a80565b610ea6565b61022d600a81565b6102436102ef366004611b40565b610f51565b610243610302366004611b62565b61108e565b610243611228565b6102067f000000000000000000000000000000000000000000000000000000000000000081565b61022d605a81565b60015461022d565b61036d610354366004611b40565b6002602052600090815260409020805460019091015482565b6040805192835260208301919091520161021a565b610243610390366004611b40565b61140e565b61022d60005481565b60055460ff166102b6565b61022d60015481565b6103c56103c0366004611b40565b611559565b60408051938452602084019290925215159082015260600161021a565b60005461022d565b60035461022d565b610243610400366004611b40565b6115a6565b61022d60035481565b61024361041c366004611bce565b611704565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046a57604051635fc483c560e01b815260040160405180910390fd5b60045460010361048d576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556003546000036104b55760405163493c1ab760e01b815260040160405180910390fd5b6003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105759190611c68565b905080610595576040516312171d8360e31b815260040160405180910390fd5b6040518281527f81521279371b94892737e5e06851c322303c72e5493db1453314ea08f55cb9379060200160405180910390a150506000600455565b6004546001036105f4576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff161561061d576040516306d39fcd60e41b815260040160405180910390fd5b81156106e6576000546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd91610675913391309190600401611c85565b6020604051808303816000875af1158015610694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190611c68565b6106d557604051634aa23e8f60e11b815260040160405180910390fd5b6106e185600054611889565b6107cf565b60006064600a6000546106f99190611cbf565b6107039190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061075690339030908690600401611c85565b6020604051808303816000875af1158015610775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107999190611c68565b6107b657604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546107c89190611cfe565b9091555050505b83836040516107df929190611d11565b6040805191829003822084151583528315156020840152916001600160a01b0388169133917f6c92a5c8a1b6c49076a075d1a499458f543fd2588ea971574373865f817ce83d910160405180910390a450506000600455505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461088457604051635fc483c560e01b815260040160405180910390fd5b60055460ff166108a75760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9490600090a1565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461092557604051635fc483c560e01b815260040160405180910390fd5b60055460ff166109485760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f15de7ad89d29fd1c6d2e6b1e878453569b4080edf34e0105faaa3bd52f01853090600090a1565b6004546001036109a0576040516345f5ce8b60e11b815260040160405180910390fd5b600160045533600090815260026020526040812080549091036109d65760405163493c1ab760e01b815260040160405180910390fd5b624f1a0081600101546109e99190611cfe565b421115610a095760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa89190611c68565b905080610ac8576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f6673747791df7fe01578fcaebe4082d6d7680f052dbdd7d2cf345f88121be421906020015b60405180910390a25050600060045550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b5157604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610b75576040516306d39fcd60e41b815260040160405180910390fd5b600180549082905560408051828152602081018490527f83b05743f1284b2faed08b3f927951e6663e5277e09a40c939f0dfe5075af77891015b60405180910390a15050565b600454600103610bde576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610c07576040516306d39fcd60e41b815260040160405180910390fd5b8115610cd0576000546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd91610c5f913391309190600401611c85565b6020604051808303816000875af1158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca29190611c68565b610cbf57604051634aa23e8f60e11b815260040160405180910390fd5b610ccb87600054611889565b610db9565b60006064600a600054610ce39190611cbf565b610ced9190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610d4090339030908690600401611c85565b6020604051808303816000875af1158015610d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d839190611c68565b610da057604051634aa23e8f60e11b815260040160405180910390fd5b8060036000828254610db29190611cfe565b9091555050505b866001600160a01b0316336001600160a01b03167f4576724219bca1c695ff280c4eba3f012c99252acd6c7d90c0407f63f8e6ad26888888888888604051610e0696959493929190611d4a565b60405180910390a3505060006004555050505050565b600454600103610e3f576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610e68576040516306d39fcd60e41b815260040160405180910390fd5b6040516000906001600160a01b038316907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed8908390a3506000600455565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eef57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610f13576040516306d39fcd60e41b815260040160405180910390fd5b600080549082905560408051828152602081018490527f528d9479e9f9889a87a3c30c7f7ba537e5e59c4c85a37733b16e57c62df613029101610baf565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f9a57604051635fc483c560e01b815260040160405180910390fd5b600454600103610fbd576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556001600160a01b03811660009081526002602052604081208054909103610ffc5760405163493c1ab760e01b815260040160405180910390fd5b624f1a00816001015461100f9190611cfe565b421161102e576040516326f6703f60e11b815260040160405180910390fd5b80546000808355600183018190556003805483929061104e908490611cfe565b90915550506040518181526001600160a01b038416907fb4572b7f0782a4b7672a2341d00e4f1a0af99d81a3f8e959f25ff679eb31448190602001610af6565b6004546001036110b1576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff16156110da576040516306d39fcd60e41b815260040160405180910390fd5b60006064600a6000546110ed9190611cbf565b6110f79190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061114a90339030908690600401611c85565b6020604051808303816000875af1158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d9190611c68565b6111aa57604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546111bc9190611cfe565b90915550506040516111d19084908490611d11565b6040518091039020336001600160a01b03167ffadda1f12158473f0f6a95450c4108a36fc8aa62f3dee6a9de94c8c5994704438787604051611214929190611d8c565b60405180910390a350506000600455505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461127157604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611295576040516306d39fcd60e41b815260040160405180910390fd5b6005805460ff19166001179055600354156113e3576003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a9190611c68565b905080156113da577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516113cd91815260200190565b60405180910390a26113e0565b60038290555b50505b6040517fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26790600090a1565b600454600103611431576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff161561145a576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0381161561151b576001546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd916114bb913391309190600401611c85565b6020604051808303816000875af11580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe9190611c68565b61151b57604051634aa23e8f60e11b815260040160405180910390fd5b6040516001600160a01b0382169033907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed890600090a3506000600455565b6001600160a01b038116600090815260026020526040812080546001820154909291829161158b90624f1a0090611cfe565b81549093501580159061159d57508242115b93959294505050565b60055460ff166115c95760405163dcdde9dd60e01b815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812080549091036116035760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a49190611c68565b905080156116f457836001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516116e791815260200190565b60405180910390a26116fe565b8183554260018401555b50505050565b600454600103611727576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611750576040516306d39fcd60e41b815260040160405180910390fd5b60006064600a6000546117639190611cbf565b61176d9190611cdc565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906117c090339030908690600401611c85565b6020604051808303816000875af11580156117df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118039190611c68565b61182057604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546118329190611cfe565b909155505060405133907fe137336c26280396075fb19ebe313eb4c539c2d845386ad035d8dee029bba31390611873908a908a908a908a908a908a90611da8565b60405180910390a2505060006004555050505050565b611896605a600019611cdc565b8111156118b657604051634eab2ea760e11b815260040160405180910390fd5b600060646118c5600a84611cbf565b6118cf9190611cdc565b905060006118dd8284611df1565b6001600160a01b03851660009081526002602052604081208054929350839290919061190a908490611cfe565b90915550506001600160a01b03841660009081526002602052604081204260019091015560038054849290611940908490611cfe565b909155505060408051828152602081018490526001600160a01b038616917fad83ccf4aebaf9db0cc5658b24e378a4a865a51b863e0289e3ee0e4947d97b1c910160405180910390a250505050565b80356001600160a01b03811681146119a657600080fd5b919050565b60008083601f8401126119bd57600080fd5b50813567ffffffffffffffff8111156119d557600080fd5b6020830191508360208285010111156119ed57600080fd5b9250929050565b8015158114611a0257600080fd5b50565b600080600080600060808688031215611a1d57600080fd5b611a268661198f565b9450602086013567ffffffffffffffff811115611a4257600080fd5b611a4e888289016119ab565b9095509350506040860135611a62816119f4565b91506060860135611a72816119f4565b809150509295509295909350565b600060208284031215611a9257600080fd5b5035919050565b600080600080600080600060a0888a031215611ab457600080fd5b611abd8861198f565b9650602088013567ffffffffffffffff80821115611ada57600080fd5b611ae68b838c016119ab565b909850965060408a0135915080821115611aff57600080fd5b50611b0c8a828b016119ab565b9095509350506060880135611b20816119f4565b91506080880135611b30816119f4565b8091505092959891949750929550565b600060208284031215611b5257600080fd5b611b5b8261198f565b9392505050565b60008060008060408587031215611b7857600080fd5b843567ffffffffffffffff80821115611b9057600080fd5b611b9c888389016119ab565b90965094506020870135915080821115611bb557600080fd5b50611bc2878288016119ab565b95989497509550505050565b60008060008060008060608789031215611be757600080fd5b863567ffffffffffffffff80821115611bff57600080fd5b611c0b8a838b016119ab565b90985096506020890135915080821115611c2457600080fd5b611c308a838b016119ab565b90965094506040890135915080821115611c4957600080fd5b50611c5689828a016119ab565b979a9699509497509295939492505050565b600060208284031215611c7a57600080fd5b8151611b5b816119f4565b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611cd657611cd6611ca9565b92915050565b600082611cf957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611cd657611cd6611ca9565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611d5e60808301888a611d21565b8281036020840152611d71818789611d21565b94151560408401525050901515606090910152949350505050565b602081526000611da0602083018486611d21565b949350505050565b606081526000611dbc60608301888a611d21565b8281036020840152611dcf818789611d21565b90508281036040840152611de4818587611d21565b9998505050505050505050565b81810381811115611cd657611cd6611ca956fea26469706673582212200466d0a077dca8c68dc0e5c81a63cd87dd82fdee2edd3a8e0b941461ba0699ac64736f6c63430008180033";
925
+ "0x60c0604052620186a0600055629896806001553480156200001f57600080fd5b50604051620023ab380380620023ab8339810160408190526200004291620000b4565b6001600160a01b03821615806200006057506001600160a01b038116155b156200007f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000ec565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060408385031215620000c857600080fd5b620000d38362000097565b9150620000e36020840162000097565b90509250929050565b60805160a0516121f8620001b360003960008181610385015281816104b0015281816105c70152818161067101528181610a1c01528181610abd01528181610ce9015281816110c20152818161116d0152818161145e015281816114f60152818161159f015261178f015260008181610224015281816106a3015281816107f0015281816108ef01528181610c0901528181610e1501528181610f140152818161133801528181611528015281816116ae0152818161197e0152611ae401526121f86000f3fe608060405234801561001057600080fd5b50600436106102055760003560e01c80637494b3231161011a578063b187bd26116100ad578063ced72f871161007c578063ced72f8714610466578063d15786871461046e578063ebf77de014610476578063f2292f0914610489578063fa26bb271461049257600080fd5b8063b187bd261461040f578063bbb2fe7c1461041a578063c5f0a58f1461042d578063cd564ccd1461043657600080fd5b80639ded51dd116100e95780639ded51dd146103af578063a3a336bf146103b7578063ac637c7a146103f3578063ae39279f1461040657600080fd5b80637494b323146103655780638456cb59146103785780638da5cb5b146103805780638db3c5fd146103a757600080fd5b80634a4e3bd51161019d578063585450141161016c57806358545014146103075780635c975abb1461031a57806369fe0e2d146103375780636a1c6e781461034a578063720e586f1461035257600080fd5b80634a4e3bd5146102d15780634b0b1b8b146102d957806355bfc81c146102e1578063569d7111146102f457600080fd5b8063358cbf0a116101d9578063358cbf0a1461028e5780633a8c3d6a146102965780633f4ba83a146102a95780633ff5aecd146102b157600080fd5b80620270a41461020a57806311eac8551461021f57806321241dfe14610263578063285298af1461027b575b600080fd5b61021d610218366004611d4d565b6104a5565b005b6102467f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61026d624f1a0081565b60405190815260200161025a565b61026d610289366004611d4d565b610592565b61021d6105bc565b61021d6102a4366004611dc9565b61076c565b61021d610a11565b61026d6102bf366004611d4d565b60066020526000908152604090205481565b61021d610ab2565b61021d610b53565b61021d6102ef366004611e44565b610cde565b61021d610302366004611e5d565b610d91565b61021d610315366004611d4d565b61102d565b6005546103279060ff1681565b604051901515815260200161025a565b61021d610345366004611e44565b6110b7565b61026d600a81565b61021d610360366004611d4d565b611162565b61021d610373366004611f04565b61129f565b61021d611453565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b61026d605a81565b60015461026d565b6103de6103c5366004611d4d565b6002602052600090815260409020805460019091015482565b6040805192835260208301919091520161025a565b61021d610401366004611d4d565b611639565b61026d60005481565b60055460ff16610327565b61021d610428366004611f70565b611784565b61026d60015481565b610449610444366004611d4d565b6118a0565b60408051938452602084019290925215159082015260600161025a565b60005461026d565b60035461026d565b61021d610484366004611d4d565b6118ed565b61026d60035481565b61021d6104a0366004611f9a565b611a4b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ee57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610512576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0381166105395760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811660008181526006602052604080822091909155517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d90610587906064815260200190565b60405180910390a250565b6001600160a01b0381166000908152600660205260408120546105b690606461204a565b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060557604051635fc483c560e01b815260040160405180910390fd5b600454600103610628576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556003546000036106505760405163493c1ab760e01b815260040160405180910390fd5b6003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610710919061205d565b905080610730576040516312171d8360e31b815260040160405180910390fd5b6040518281527f81521279371b94892737e5e06851c322303c72e5493db1453314ea08f55cb9379060200160405180910390a150506000600455565b60045460010361078f576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff16156107b8576040516306d39fcd60e41b815260040160405180910390fd5b81156108a25760006107cc33600054611bea565b905060008111801561086e57506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108299033903090869060040161207a565b6020604051808303816000875af1158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c919061205d565b155b1561088c57604051634aa23e8f60e11b815260040160405180910390fd5b801561089c5761089c8682611c2b565b506109a5565b60006108b033600054611bea565b9050600060646108c1600a8461209e565b6108cb91906120b5565b905060008111801561096d57506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906109289033903090869060040161207a565b6020604051808303816000875af1158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061205d565b155b1561098b57604051634aa23e8f60e11b815260040160405180910390fd5b806003600082825461099d91906120d7565b909155505050505b83836040516109b59291906120ea565b6040805191829003822084151583528315156020840152916001600160a01b0388169133917f6c92a5c8a1b6c49076a075d1a499458f543fd2588ea971574373865f817ce83d910160405180910390a450506000600455505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5a57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16610a7d5760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9490600090a1565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afb57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16610b1e5760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f15de7ad89d29fd1c6d2e6b1e878453569b4080edf34e0105faaa3bd52f01853090600090a1565b600454600103610b76576040516345f5ce8b60e11b815260040160405180910390fd5b60016004553360009081526002602052604081208054909103610bac5760405163493c1ab760e01b815260040160405180910390fd5b624f1a008160010154610bbf91906120d7565b421115610bdf5760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e919061205d565b905080610c9e576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f6673747791df7fe01578fcaebe4082d6d7680f052dbdd7d2cf345f88121be421906020015b60405180910390a25050600060045550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d2757604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610d4b576040516306d39fcd60e41b815260040160405180910390fd5b600180549082905560408051828152602081018490527f83b05743f1284b2faed08b3f927951e6663e5277e09a40c939f0dfe5075af77891015b60405180910390a15050565b600454600103610db4576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610ddd576040516306d39fcd60e41b815260040160405180910390fd5b8115610ec7576000610df133600054611bea565b9050600081118015610e9357506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610e4e9033903090869060040161207a565b6020604051808303816000875af1158015610e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e91919061205d565b155b15610eb157604051634aa23e8f60e11b815260040160405180910390fd5b8015610ec157610ec18882611c2b565b50610fca565b6000610ed533600054611bea565b905060006064610ee6600a8461209e565b610ef091906120b5565b9050600081118015610f9257506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610f4d9033903090869060040161207a565b6020604051808303816000875af1158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f90919061205d565b155b15610fb057604051634aa23e8f60e11b815260040160405180910390fd5b8060036000828254610fc291906120d7565b909155505050505b866001600160a01b0316336001600160a01b03167f4576724219bca1c695ff280c4eba3f012c99252acd6c7d90c0407f63f8e6ad2688888888888860405161101796959493929190612123565b60405180910390a3505060006004555050505050565b600454600103611050576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611079576040516306d39fcd60e41b815260040160405180910390fd5b6040516000906001600160a01b038316907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed8908390a3506000600455565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461110057604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611124576040516306d39fcd60e41b815260040160405180910390fd5b600080549082905560408051828152602081018490527f528d9479e9f9889a87a3c30c7f7ba537e5e59c4c85a37733b16e57c62df613029101610d85565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111ab57604051635fc483c560e01b815260040160405180910390fd5b6004546001036111ce576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556001600160a01b0381166000908152600260205260408120805490910361120d5760405163493c1ab760e01b815260040160405180910390fd5b624f1a00816001015461122091906120d7565b421161123f576040516326f6703f60e11b815260040160405180910390fd5b80546000808355600183018190556003805483929061125f9084906120d7565b90915550506040518181526001600160a01b038416907fb4572b7f0782a4b7672a2341d00e4f1a0af99d81a3f8e959f25ff679eb31448190602001610ccc565b6004546001036112c2576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff16156112eb576040516306d39fcd60e41b815260040160405180910390fd5b60006112f933600054611bea565b90506000606461130a600a8461209e565b61131491906120b5565b90506000811180156113b657506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906113719033903090869060040161207a565b6020604051808303816000875af1158015611390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b4919061205d565b155b156113d457604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546113e691906120d7565b90915550506040516113fb90859085906120ea565b6040518091039020336001600160a01b03167ffadda1f12158473f0f6a95450c4108a36fc8aa62f3dee6a9de94c8c599470443888860405161143e929190612165565b60405180910390a35050600060045550505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461149c57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16156114c0576040516306d39fcd60e41b815260040160405180910390fd5b6005805460ff191660011790556003541561160e576003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611571573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611595919061205d565b90508015611605577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516115f891815260200190565b60405180910390a261160b565b60038290555b50505b6040517fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26790600090a1565b60045460010361165c576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611685576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b03811615611746576001546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd916116e691339130919060040161207a565b6020604051808303816000875af1158015611705573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611729919061205d565b61174657604051634aa23e8f60e11b815260040160405180910390fd5b6040516001600160a01b0382169033907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed890600090a3506000600455565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117cd57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16156117f1576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0382166118185760405163e6c4247b60e01b815260040160405180910390fd5b606481111561183a57604051631f3b85d360e01b815260040160405180910390fd5b61184581606461204a565b6001600160a01b038316600081815260066020526040908190209290925590517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d906118949084815260200190565b60405180910390a25050565b6001600160a01b03811660009081526002602052604081208054600182015490929182916118d290624f1a00906120d7565b8154909350158015906118e457508242115b93959294505050565b60055460ff166119105760405163dcdde9dd60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600260205260408120805490910361194a5760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061205d565b90508015611a3b57836001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd83604051611a2e91815260200190565b60405180910390a2611a45565b8183554260018401555b50505050565b600454600103611a6e576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611a97576040516306d39fcd60e41b815260040160405180910390fd5b6000611aa533600054611bea565b905060006064611ab6600a8461209e565b611ac091906120b5565b9050600081118015611b6257506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90611b1d9033903090869060040161207a565b6020604051808303816000875af1158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b60919061205d565b155b15611b8057604051634aa23e8f60e11b815260040160405180910390fd5b8060036000828254611b9291906120d7565b909155505060405133907fe137336c26280396075fb19ebe313eb4c539c2d845386ad035d8dee029bba31390611bd3908b908b908b908b908b908b90612179565b60405180910390a250506000600455505050505050565b6001600160a01b0382166000908152600660205260408120546064611c0f828261204a565b611c19908561209e565b611c2391906120b5565b949350505050565b611c38605a6000196120b5565b811115611c5857604051634eab2ea760e11b815260040160405180910390fd5b60006064611c67600a8461209e565b611c7191906120b5565b90506000611c7f828461204a565b6001600160a01b038516600090815260026020526040812080549293508392909190611cac9084906120d7565b90915550506001600160a01b03841660009081526002602052604081204260019091015560038054849290611ce29084906120d7565b909155505060408051828152602081018490526001600160a01b038616917fad83ccf4aebaf9db0cc5658b24e378a4a865a51b863e0289e3ee0e4947d97b1c910160405180910390a250505050565b80356001600160a01b0381168114611d4857600080fd5b919050565b600060208284031215611d5f57600080fd5b611d6882611d31565b9392505050565b60008083601f840112611d8157600080fd5b50813567ffffffffffffffff811115611d9957600080fd5b602083019150836020828501011115611db157600080fd5b9250929050565b8015158114611dc657600080fd5b50565b600080600080600060808688031215611de157600080fd5b611dea86611d31565b9450602086013567ffffffffffffffff811115611e0657600080fd5b611e1288828901611d6f565b9095509350506040860135611e2681611db8565b91506060860135611e3681611db8565b809150509295509295909350565b600060208284031215611e5657600080fd5b5035919050565b600080600080600080600060a0888a031215611e7857600080fd5b611e8188611d31565b9650602088013567ffffffffffffffff80821115611e9e57600080fd5b611eaa8b838c01611d6f565b909850965060408a0135915080821115611ec357600080fd5b50611ed08a828b01611d6f565b9095509350506060880135611ee481611db8565b91506080880135611ef481611db8565b8091505092959891949750929550565b60008060008060408587031215611f1a57600080fd5b843567ffffffffffffffff80821115611f3257600080fd5b611f3e88838901611d6f565b90965094506020870135915080821115611f5757600080fd5b50611f6487828801611d6f565b95989497509550505050565b60008060408385031215611f8357600080fd5b611f8c83611d31565b946020939093013593505050565b60008060008060008060608789031215611fb357600080fd5b863567ffffffffffffffff80821115611fcb57600080fd5b611fd78a838b01611d6f565b90985096506020890135915080821115611ff057600080fd5b611ffc8a838b01611d6f565b9096509450604089013591508082111561201557600080fd5b5061202289828a01611d6f565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b6576105b6612034565b60006020828403121561206f57600080fd5b8151611d6881611db8565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820281158282048414176105b6576105b6612034565b6000826120d257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105b6576105b6612034565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061213760808301888a6120fa565b828103602084015261214a8187896120fa565b94151560408401525050901515606090910152949350505050565b602081526000611c236020830184866120fa565b60608152600061218d60608301888a6120fa565b82810360208401526121a08187896120fa565b905082810360408401526121b58185876120fa565b999850505050505050505056fea26469706673582212208a82d8e37c43fe6ce0c564334fcf3525212c54604dc8ca3a5e602c719f3ed32864736f6c63430008180033";
833
926
 
834
927
  type MailerConstructorParams =
835
928
  | [signer?: Signer]