@aastar/core 0.16.7

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 (136) hide show
  1. package/LICENSE +21 -0
  2. package/dist/abis/BLSAggregator.json +686 -0
  3. package/dist/abis/BLSValidator.json +42 -0
  4. package/dist/abis/DVTValidator.json +368 -0
  5. package/dist/abis/Eip7702Support.json +24 -0
  6. package/dist/abis/EntryPoint.json +1382 -0
  7. package/dist/abis/GToken.json +513 -0
  8. package/dist/abis/GTokenStaking.json +949 -0
  9. package/dist/abis/LegacyAccount.json +625 -0
  10. package/dist/abis/MySBT.json +1518 -0
  11. package/dist/abis/Paymaster.json +1143 -0
  12. package/dist/abis/PaymasterFactory.json +640 -0
  13. package/dist/abis/Registry.json +1942 -0
  14. package/dist/abis/ReputationSystem.json +699 -0
  15. package/dist/abis/SenderCreator.json +99 -0
  16. package/dist/abis/Simple7702Account.json +395 -0
  17. package/dist/abis/SimpleAccount.json +560 -0
  18. package/dist/abis/SimpleAccountFactory.json +111 -0
  19. package/dist/abis/SimpleAccountFactoryV08.json +87 -0
  20. package/dist/abis/SimpleAccountV08.json +557 -0
  21. package/dist/abis/SuperPaymaster.json +1781 -0
  22. package/dist/abis/UserOperationLib.json +57 -0
  23. package/dist/abis/abi.config.json +24 -0
  24. package/dist/abis/index.d.ts +1126 -0
  25. package/dist/abis/index.js +91 -0
  26. package/dist/abis/xPNTsFactory.json +718 -0
  27. package/dist/abis/xPNTsToken.json +1280 -0
  28. package/dist/actions/StateValidator.d.ts +68 -0
  29. package/dist/actions/StateValidator.js +187 -0
  30. package/dist/actions/StateValidator.test.d.ts +1 -0
  31. package/dist/actions/StateValidator.test.js +144 -0
  32. package/dist/actions/account.d.ts +55 -0
  33. package/dist/actions/account.js +133 -0
  34. package/dist/actions/account.test.d.ts +1 -0
  35. package/dist/actions/account.test.js +118 -0
  36. package/dist/actions/aggregator.d.ts +17 -0
  37. package/dist/actions/aggregator.js +31 -0
  38. package/dist/actions/aggregator.test.d.ts +1 -0
  39. package/dist/actions/aggregator.test.js +67 -0
  40. package/dist/actions/dvt.d.ts +30 -0
  41. package/dist/actions/dvt.js +41 -0
  42. package/dist/actions/dvt.test.d.ts +1 -0
  43. package/dist/actions/dvt.test.js +98 -0
  44. package/dist/actions/entryPoint.d.ts +90 -0
  45. package/dist/actions/entryPoint.js +211 -0
  46. package/dist/actions/entryPoint.test.d.ts +1 -0
  47. package/dist/actions/entryPoint.test.js +139 -0
  48. package/dist/actions/factory.d.ts +215 -0
  49. package/dist/actions/factory.js +442 -0
  50. package/dist/actions/factory.test.d.ts +1 -0
  51. package/dist/actions/factory.test.js +197 -0
  52. package/dist/actions/faucet.d.ts +48 -0
  53. package/dist/actions/faucet.js +337 -0
  54. package/dist/actions/faucet.test.d.ts +1 -0
  55. package/dist/actions/faucet.test.js +120 -0
  56. package/dist/actions/gtokenExtended.d.ts +39 -0
  57. package/dist/actions/gtokenExtended.js +115 -0
  58. package/dist/actions/gtokenExtended.test.d.ts +1 -0
  59. package/dist/actions/gtokenExtended.test.js +118 -0
  60. package/dist/actions/index.d.ts +15 -0
  61. package/dist/actions/index.js +17 -0
  62. package/dist/actions/paymasterV4.d.ts +170 -0
  63. package/dist/actions/paymasterV4.js +334 -0
  64. package/dist/actions/paymasterV4.test.d.ts +1 -0
  65. package/dist/actions/paymasterV4.test.js +159 -0
  66. package/dist/actions/registry.d.ts +246 -0
  67. package/dist/actions/registry.js +667 -0
  68. package/dist/actions/registry.test.d.ts +1 -0
  69. package/dist/actions/registry.test.js +360 -0
  70. package/dist/actions/reputation.d.ts +129 -0
  71. package/dist/actions/reputation.js +281 -0
  72. package/dist/actions/reputation.test.d.ts +1 -0
  73. package/dist/actions/reputation.test.js +169 -0
  74. package/dist/actions/sbt.d.ts +191 -0
  75. package/dist/actions/sbt.js +533 -0
  76. package/dist/actions/sbt.test.d.ts +1 -0
  77. package/dist/actions/sbt.test.js +256 -0
  78. package/dist/actions/staking.d.ts +132 -0
  79. package/dist/actions/staking.js +330 -0
  80. package/dist/actions/staking.test.d.ts +1 -0
  81. package/dist/actions/staking.test.js +223 -0
  82. package/dist/actions/superPaymaster.d.ts +237 -0
  83. package/dist/actions/superPaymaster.js +644 -0
  84. package/dist/actions/superPaymaster.test.d.ts +1 -0
  85. package/dist/actions/superPaymaster.test.js +287 -0
  86. package/dist/actions/tokens.d.ts +229 -0
  87. package/dist/actions/tokens.js +415 -0
  88. package/dist/actions/tokens.test.d.ts +1 -0
  89. package/dist/actions/tokens.test.js +53 -0
  90. package/dist/actions/validators.d.ts +194 -0
  91. package/dist/actions/validators.js +433 -0
  92. package/dist/actions/validators.test.d.ts +1 -0
  93. package/dist/actions/validators.test.js +215 -0
  94. package/dist/branding.d.ts +30 -0
  95. package/dist/branding.js +30 -0
  96. package/dist/clients/BaseClient.d.ts +25 -0
  97. package/dist/clients/BaseClient.js +66 -0
  98. package/dist/clients/types.d.ts +60 -0
  99. package/dist/clients/types.js +1 -0
  100. package/dist/clients.d.ts +5 -0
  101. package/dist/clients.js +11 -0
  102. package/dist/communities.d.ts +52 -0
  103. package/dist/communities.js +73 -0
  104. package/dist/config/ContractConfigManager.d.ts +20 -0
  105. package/dist/config/ContractConfigManager.js +48 -0
  106. package/dist/constants.d.ts +88 -0
  107. package/dist/constants.js +125 -0
  108. package/dist/contract-addresses.d.ts +110 -0
  109. package/dist/contract-addresses.js +99 -0
  110. package/dist/contracts.d.ts +424 -0
  111. package/dist/contracts.js +343 -0
  112. package/dist/contracts.test.d.ts +1 -0
  113. package/dist/contracts.test.js +40 -0
  114. package/dist/crypto/blsSigner.d.ts +64 -0
  115. package/dist/crypto/blsSigner.js +98 -0
  116. package/dist/crypto/index.d.ts +1 -0
  117. package/dist/crypto/index.js +1 -0
  118. package/dist/index.d.ts +21 -0
  119. package/dist/index.js +21 -0
  120. package/dist/networks.d.ts +127 -0
  121. package/dist/networks.js +118 -0
  122. package/dist/requirementChecker.d.ts +38 -0
  123. package/dist/requirementChecker.js +139 -0
  124. package/dist/requirementChecker.test.d.ts +1 -0
  125. package/dist/requirementChecker.test.js +60 -0
  126. package/dist/roles.d.ts +204 -0
  127. package/dist/roles.js +211 -0
  128. package/dist/roles.test.d.ts +1 -0
  129. package/dist/roles.test.js +23 -0
  130. package/dist/utils/validation.d.ts +24 -0
  131. package/dist/utils/validation.js +56 -0
  132. package/dist/utils/validation.test.d.ts +1 -0
  133. package/dist/utils/validation.test.js +40 -0
  134. package/dist/utils.d.ts +12 -0
  135. package/dist/utils.js +14 -0
  136. package/package.json +33 -0
@@ -0,0 +1,1382 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "constructor",
5
+ "inputs": [],
6
+ "stateMutability": "nonpayable"
7
+ },
8
+ {
9
+ "type": "receive",
10
+ "stateMutability": "payable"
11
+ },
12
+ {
13
+ "type": "function",
14
+ "name": "addStake",
15
+ "inputs": [
16
+ {
17
+ "name": "unstakeDelaySec",
18
+ "type": "uint32",
19
+ "internalType": "uint32"
20
+ }
21
+ ],
22
+ "outputs": [],
23
+ "stateMutability": "payable"
24
+ },
25
+ {
26
+ "type": "function",
27
+ "name": "balanceOf",
28
+ "inputs": [
29
+ {
30
+ "name": "account",
31
+ "type": "address",
32
+ "internalType": "address"
33
+ }
34
+ ],
35
+ "outputs": [
36
+ {
37
+ "name": "",
38
+ "type": "uint256",
39
+ "internalType": "uint256"
40
+ }
41
+ ],
42
+ "stateMutability": "view"
43
+ },
44
+ {
45
+ "type": "function",
46
+ "name": "delegateAndRevert",
47
+ "inputs": [
48
+ {
49
+ "name": "target",
50
+ "type": "address",
51
+ "internalType": "address"
52
+ },
53
+ {
54
+ "name": "data",
55
+ "type": "bytes",
56
+ "internalType": "bytes"
57
+ }
58
+ ],
59
+ "outputs": [],
60
+ "stateMutability": "nonpayable"
61
+ },
62
+ {
63
+ "type": "function",
64
+ "name": "depositTo",
65
+ "inputs": [
66
+ {
67
+ "name": "account",
68
+ "type": "address",
69
+ "internalType": "address"
70
+ }
71
+ ],
72
+ "outputs": [],
73
+ "stateMutability": "payable"
74
+ },
75
+ {
76
+ "type": "function",
77
+ "name": "eip712Domain",
78
+ "inputs": [],
79
+ "outputs": [
80
+ {
81
+ "name": "fields",
82
+ "type": "bytes1",
83
+ "internalType": "bytes1"
84
+ },
85
+ {
86
+ "name": "name",
87
+ "type": "string",
88
+ "internalType": "string"
89
+ },
90
+ {
91
+ "name": "version",
92
+ "type": "string",
93
+ "internalType": "string"
94
+ },
95
+ {
96
+ "name": "chainId",
97
+ "type": "uint256",
98
+ "internalType": "uint256"
99
+ },
100
+ {
101
+ "name": "verifyingContract",
102
+ "type": "address",
103
+ "internalType": "address"
104
+ },
105
+ {
106
+ "name": "salt",
107
+ "type": "bytes32",
108
+ "internalType": "bytes32"
109
+ },
110
+ {
111
+ "name": "extensions",
112
+ "type": "uint256[]",
113
+ "internalType": "uint256[]"
114
+ }
115
+ ],
116
+ "stateMutability": "view"
117
+ },
118
+ {
119
+ "type": "function",
120
+ "name": "getCurrentUserOpHash",
121
+ "inputs": [],
122
+ "outputs": [
123
+ {
124
+ "name": "",
125
+ "type": "bytes32",
126
+ "internalType": "bytes32"
127
+ }
128
+ ],
129
+ "stateMutability": "view"
130
+ },
131
+ {
132
+ "type": "function",
133
+ "name": "getDepositInfo",
134
+ "inputs": [
135
+ {
136
+ "name": "account",
137
+ "type": "address",
138
+ "internalType": "address"
139
+ }
140
+ ],
141
+ "outputs": [
142
+ {
143
+ "name": "info",
144
+ "type": "tuple",
145
+ "internalType": "struct IStakeManager.DepositInfo",
146
+ "components": [
147
+ {
148
+ "name": "deposit",
149
+ "type": "uint256",
150
+ "internalType": "uint256"
151
+ },
152
+ {
153
+ "name": "staked",
154
+ "type": "bool",
155
+ "internalType": "bool"
156
+ },
157
+ {
158
+ "name": "stake",
159
+ "type": "uint112",
160
+ "internalType": "uint112"
161
+ },
162
+ {
163
+ "name": "unstakeDelaySec",
164
+ "type": "uint32",
165
+ "internalType": "uint32"
166
+ },
167
+ {
168
+ "name": "withdrawTime",
169
+ "type": "uint48",
170
+ "internalType": "uint48"
171
+ }
172
+ ]
173
+ }
174
+ ],
175
+ "stateMutability": "view"
176
+ },
177
+ {
178
+ "type": "function",
179
+ "name": "getDomainSeparatorV4",
180
+ "inputs": [],
181
+ "outputs": [
182
+ {
183
+ "name": "",
184
+ "type": "bytes32",
185
+ "internalType": "bytes32"
186
+ }
187
+ ],
188
+ "stateMutability": "view"
189
+ },
190
+ {
191
+ "type": "function",
192
+ "name": "getNonce",
193
+ "inputs": [
194
+ {
195
+ "name": "sender",
196
+ "type": "address",
197
+ "internalType": "address"
198
+ },
199
+ {
200
+ "name": "key",
201
+ "type": "uint192",
202
+ "internalType": "uint192"
203
+ }
204
+ ],
205
+ "outputs": [
206
+ {
207
+ "name": "nonce",
208
+ "type": "uint256",
209
+ "internalType": "uint256"
210
+ }
211
+ ],
212
+ "stateMutability": "view"
213
+ },
214
+ {
215
+ "type": "function",
216
+ "name": "getPackedUserOpTypeHash",
217
+ "inputs": [],
218
+ "outputs": [
219
+ {
220
+ "name": "",
221
+ "type": "bytes32",
222
+ "internalType": "bytes32"
223
+ }
224
+ ],
225
+ "stateMutability": "pure"
226
+ },
227
+ {
228
+ "type": "function",
229
+ "name": "getSenderAddress",
230
+ "inputs": [
231
+ {
232
+ "name": "initCode",
233
+ "type": "bytes",
234
+ "internalType": "bytes"
235
+ }
236
+ ],
237
+ "outputs": [],
238
+ "stateMutability": "nonpayable"
239
+ },
240
+ {
241
+ "type": "function",
242
+ "name": "getUserOpHash",
243
+ "inputs": [
244
+ {
245
+ "name": "userOp",
246
+ "type": "tuple",
247
+ "internalType": "struct PackedUserOperation",
248
+ "components": [
249
+ {
250
+ "name": "sender",
251
+ "type": "address",
252
+ "internalType": "address"
253
+ },
254
+ {
255
+ "name": "nonce",
256
+ "type": "uint256",
257
+ "internalType": "uint256"
258
+ },
259
+ {
260
+ "name": "initCode",
261
+ "type": "bytes",
262
+ "internalType": "bytes"
263
+ },
264
+ {
265
+ "name": "callData",
266
+ "type": "bytes",
267
+ "internalType": "bytes"
268
+ },
269
+ {
270
+ "name": "accountGasLimits",
271
+ "type": "bytes32",
272
+ "internalType": "bytes32"
273
+ },
274
+ {
275
+ "name": "preVerificationGas",
276
+ "type": "uint256",
277
+ "internalType": "uint256"
278
+ },
279
+ {
280
+ "name": "gasFees",
281
+ "type": "bytes32",
282
+ "internalType": "bytes32"
283
+ },
284
+ {
285
+ "name": "paymasterAndData",
286
+ "type": "bytes",
287
+ "internalType": "bytes"
288
+ },
289
+ {
290
+ "name": "signature",
291
+ "type": "bytes",
292
+ "internalType": "bytes"
293
+ }
294
+ ]
295
+ }
296
+ ],
297
+ "outputs": [
298
+ {
299
+ "name": "",
300
+ "type": "bytes32",
301
+ "internalType": "bytes32"
302
+ }
303
+ ],
304
+ "stateMutability": "view"
305
+ },
306
+ {
307
+ "type": "function",
308
+ "name": "handleAggregatedOps",
309
+ "inputs": [
310
+ {
311
+ "name": "opsPerAggregator",
312
+ "type": "tuple[]",
313
+ "internalType": "struct IEntryPoint.UserOpsPerAggregator[]",
314
+ "components": [
315
+ {
316
+ "name": "userOps",
317
+ "type": "tuple[]",
318
+ "internalType": "struct PackedUserOperation[]",
319
+ "components": [
320
+ {
321
+ "name": "sender",
322
+ "type": "address",
323
+ "internalType": "address"
324
+ },
325
+ {
326
+ "name": "nonce",
327
+ "type": "uint256",
328
+ "internalType": "uint256"
329
+ },
330
+ {
331
+ "name": "initCode",
332
+ "type": "bytes",
333
+ "internalType": "bytes"
334
+ },
335
+ {
336
+ "name": "callData",
337
+ "type": "bytes",
338
+ "internalType": "bytes"
339
+ },
340
+ {
341
+ "name": "accountGasLimits",
342
+ "type": "bytes32",
343
+ "internalType": "bytes32"
344
+ },
345
+ {
346
+ "name": "preVerificationGas",
347
+ "type": "uint256",
348
+ "internalType": "uint256"
349
+ },
350
+ {
351
+ "name": "gasFees",
352
+ "type": "bytes32",
353
+ "internalType": "bytes32"
354
+ },
355
+ {
356
+ "name": "paymasterAndData",
357
+ "type": "bytes",
358
+ "internalType": "bytes"
359
+ },
360
+ {
361
+ "name": "signature",
362
+ "type": "bytes",
363
+ "internalType": "bytes"
364
+ }
365
+ ]
366
+ },
367
+ {
368
+ "name": "aggregator",
369
+ "type": "address",
370
+ "internalType": "contract IAggregator"
371
+ },
372
+ {
373
+ "name": "signature",
374
+ "type": "bytes",
375
+ "internalType": "bytes"
376
+ }
377
+ ]
378
+ },
379
+ {
380
+ "name": "beneficiary",
381
+ "type": "address",
382
+ "internalType": "address payable"
383
+ }
384
+ ],
385
+ "outputs": [],
386
+ "stateMutability": "nonpayable"
387
+ },
388
+ {
389
+ "type": "function",
390
+ "name": "handleOps",
391
+ "inputs": [
392
+ {
393
+ "name": "ops",
394
+ "type": "tuple[]",
395
+ "internalType": "struct PackedUserOperation[]",
396
+ "components": [
397
+ {
398
+ "name": "sender",
399
+ "type": "address",
400
+ "internalType": "address"
401
+ },
402
+ {
403
+ "name": "nonce",
404
+ "type": "uint256",
405
+ "internalType": "uint256"
406
+ },
407
+ {
408
+ "name": "initCode",
409
+ "type": "bytes",
410
+ "internalType": "bytes"
411
+ },
412
+ {
413
+ "name": "callData",
414
+ "type": "bytes",
415
+ "internalType": "bytes"
416
+ },
417
+ {
418
+ "name": "accountGasLimits",
419
+ "type": "bytes32",
420
+ "internalType": "bytes32"
421
+ },
422
+ {
423
+ "name": "preVerificationGas",
424
+ "type": "uint256",
425
+ "internalType": "uint256"
426
+ },
427
+ {
428
+ "name": "gasFees",
429
+ "type": "bytes32",
430
+ "internalType": "bytes32"
431
+ },
432
+ {
433
+ "name": "paymasterAndData",
434
+ "type": "bytes",
435
+ "internalType": "bytes"
436
+ },
437
+ {
438
+ "name": "signature",
439
+ "type": "bytes",
440
+ "internalType": "bytes"
441
+ }
442
+ ]
443
+ },
444
+ {
445
+ "name": "beneficiary",
446
+ "type": "address",
447
+ "internalType": "address payable"
448
+ }
449
+ ],
450
+ "outputs": [],
451
+ "stateMutability": "nonpayable"
452
+ },
453
+ {
454
+ "type": "function",
455
+ "name": "incrementNonce",
456
+ "inputs": [
457
+ {
458
+ "name": "key",
459
+ "type": "uint192",
460
+ "internalType": "uint192"
461
+ }
462
+ ],
463
+ "outputs": [],
464
+ "stateMutability": "nonpayable"
465
+ },
466
+ {
467
+ "type": "function",
468
+ "name": "innerHandleOp",
469
+ "inputs": [
470
+ {
471
+ "name": "callData",
472
+ "type": "bytes",
473
+ "internalType": "bytes"
474
+ },
475
+ {
476
+ "name": "opInfo",
477
+ "type": "tuple",
478
+ "internalType": "struct EntryPoint.UserOpInfo",
479
+ "components": [
480
+ {
481
+ "name": "mUserOp",
482
+ "type": "tuple",
483
+ "internalType": "struct EntryPoint.MemoryUserOp",
484
+ "components": [
485
+ {
486
+ "name": "sender",
487
+ "type": "address",
488
+ "internalType": "address"
489
+ },
490
+ {
491
+ "name": "nonce",
492
+ "type": "uint256",
493
+ "internalType": "uint256"
494
+ },
495
+ {
496
+ "name": "verificationGasLimit",
497
+ "type": "uint256",
498
+ "internalType": "uint256"
499
+ },
500
+ {
501
+ "name": "callGasLimit",
502
+ "type": "uint256",
503
+ "internalType": "uint256"
504
+ },
505
+ {
506
+ "name": "paymasterVerificationGasLimit",
507
+ "type": "uint256",
508
+ "internalType": "uint256"
509
+ },
510
+ {
511
+ "name": "paymasterPostOpGasLimit",
512
+ "type": "uint256",
513
+ "internalType": "uint256"
514
+ },
515
+ {
516
+ "name": "preVerificationGas",
517
+ "type": "uint256",
518
+ "internalType": "uint256"
519
+ },
520
+ {
521
+ "name": "paymaster",
522
+ "type": "address",
523
+ "internalType": "address"
524
+ },
525
+ {
526
+ "name": "maxFeePerGas",
527
+ "type": "uint256",
528
+ "internalType": "uint256"
529
+ },
530
+ {
531
+ "name": "maxPriorityFeePerGas",
532
+ "type": "uint256",
533
+ "internalType": "uint256"
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "name": "userOpHash",
539
+ "type": "bytes32",
540
+ "internalType": "bytes32"
541
+ },
542
+ {
543
+ "name": "prefund",
544
+ "type": "uint256",
545
+ "internalType": "uint256"
546
+ },
547
+ {
548
+ "name": "contextOffset",
549
+ "type": "uint256",
550
+ "internalType": "uint256"
551
+ },
552
+ {
553
+ "name": "preOpGas",
554
+ "type": "uint256",
555
+ "internalType": "uint256"
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ "name": "context",
561
+ "type": "bytes",
562
+ "internalType": "bytes"
563
+ }
564
+ ],
565
+ "outputs": [
566
+ {
567
+ "name": "actualGasCost",
568
+ "type": "uint256",
569
+ "internalType": "uint256"
570
+ }
571
+ ],
572
+ "stateMutability": "nonpayable"
573
+ },
574
+ {
575
+ "type": "function",
576
+ "name": "nonceSequenceNumber",
577
+ "inputs": [
578
+ {
579
+ "name": "",
580
+ "type": "address",
581
+ "internalType": "address"
582
+ },
583
+ {
584
+ "name": "",
585
+ "type": "uint192",
586
+ "internalType": "uint192"
587
+ }
588
+ ],
589
+ "outputs": [
590
+ {
591
+ "name": "",
592
+ "type": "uint256",
593
+ "internalType": "uint256"
594
+ }
595
+ ],
596
+ "stateMutability": "view"
597
+ },
598
+ {
599
+ "type": "function",
600
+ "name": "senderCreator",
601
+ "inputs": [],
602
+ "outputs": [
603
+ {
604
+ "name": "",
605
+ "type": "address",
606
+ "internalType": "contract ISenderCreator"
607
+ }
608
+ ],
609
+ "stateMutability": "view"
610
+ },
611
+ {
612
+ "type": "function",
613
+ "name": "supportsInterface",
614
+ "inputs": [
615
+ {
616
+ "name": "interfaceId",
617
+ "type": "bytes4",
618
+ "internalType": "bytes4"
619
+ }
620
+ ],
621
+ "outputs": [
622
+ {
623
+ "name": "",
624
+ "type": "bool",
625
+ "internalType": "bool"
626
+ }
627
+ ],
628
+ "stateMutability": "view"
629
+ },
630
+ {
631
+ "type": "function",
632
+ "name": "unlockStake",
633
+ "inputs": [],
634
+ "outputs": [],
635
+ "stateMutability": "nonpayable"
636
+ },
637
+ {
638
+ "type": "function",
639
+ "name": "withdrawStake",
640
+ "inputs": [
641
+ {
642
+ "name": "withdrawAddress",
643
+ "type": "address",
644
+ "internalType": "address payable"
645
+ }
646
+ ],
647
+ "outputs": [],
648
+ "stateMutability": "nonpayable"
649
+ },
650
+ {
651
+ "type": "function",
652
+ "name": "withdrawTo",
653
+ "inputs": [
654
+ {
655
+ "name": "withdrawAddress",
656
+ "type": "address",
657
+ "internalType": "address payable"
658
+ },
659
+ {
660
+ "name": "withdrawAmount",
661
+ "type": "uint256",
662
+ "internalType": "uint256"
663
+ }
664
+ ],
665
+ "outputs": [],
666
+ "stateMutability": "nonpayable"
667
+ },
668
+ {
669
+ "type": "event",
670
+ "name": "AccountDeployed",
671
+ "inputs": [
672
+ {
673
+ "name": "userOpHash",
674
+ "type": "bytes32",
675
+ "indexed": true,
676
+ "internalType": "bytes32"
677
+ },
678
+ {
679
+ "name": "sender",
680
+ "type": "address",
681
+ "indexed": true,
682
+ "internalType": "address"
683
+ },
684
+ {
685
+ "name": "factory",
686
+ "type": "address",
687
+ "indexed": false,
688
+ "internalType": "address"
689
+ },
690
+ {
691
+ "name": "paymaster",
692
+ "type": "address",
693
+ "indexed": false,
694
+ "internalType": "address"
695
+ }
696
+ ],
697
+ "anonymous": false
698
+ },
699
+ {
700
+ "type": "event",
701
+ "name": "BeforeExecution",
702
+ "inputs": [],
703
+ "anonymous": false
704
+ },
705
+ {
706
+ "type": "event",
707
+ "name": "Deposited",
708
+ "inputs": [
709
+ {
710
+ "name": "account",
711
+ "type": "address",
712
+ "indexed": true,
713
+ "internalType": "address"
714
+ },
715
+ {
716
+ "name": "totalDeposit",
717
+ "type": "uint256",
718
+ "indexed": false,
719
+ "internalType": "uint256"
720
+ }
721
+ ],
722
+ "anonymous": false
723
+ },
724
+ {
725
+ "type": "event",
726
+ "name": "EIP712DomainChanged",
727
+ "inputs": [],
728
+ "anonymous": false
729
+ },
730
+ {
731
+ "type": "event",
732
+ "name": "EIP7702AccountInitialized",
733
+ "inputs": [
734
+ {
735
+ "name": "userOpHash",
736
+ "type": "bytes32",
737
+ "indexed": true,
738
+ "internalType": "bytes32"
739
+ },
740
+ {
741
+ "name": "sender",
742
+ "type": "address",
743
+ "indexed": true,
744
+ "internalType": "address"
745
+ },
746
+ {
747
+ "name": "delegate",
748
+ "type": "address",
749
+ "indexed": true,
750
+ "internalType": "address"
751
+ }
752
+ ],
753
+ "anonymous": false
754
+ },
755
+ {
756
+ "type": "event",
757
+ "name": "IgnoredInitCode",
758
+ "inputs": [
759
+ {
760
+ "name": "userOpHash",
761
+ "type": "bytes32",
762
+ "indexed": true,
763
+ "internalType": "bytes32"
764
+ },
765
+ {
766
+ "name": "sender",
767
+ "type": "address",
768
+ "indexed": true,
769
+ "internalType": "address"
770
+ },
771
+ {
772
+ "name": "unusedFactory",
773
+ "type": "address",
774
+ "indexed": false,
775
+ "internalType": "address"
776
+ }
777
+ ],
778
+ "anonymous": false
779
+ },
780
+ {
781
+ "type": "event",
782
+ "name": "PostOpRevertReason",
783
+ "inputs": [
784
+ {
785
+ "name": "userOpHash",
786
+ "type": "bytes32",
787
+ "indexed": true,
788
+ "internalType": "bytes32"
789
+ },
790
+ {
791
+ "name": "sender",
792
+ "type": "address",
793
+ "indexed": true,
794
+ "internalType": "address"
795
+ },
796
+ {
797
+ "name": "nonce",
798
+ "type": "uint256",
799
+ "indexed": false,
800
+ "internalType": "uint256"
801
+ },
802
+ {
803
+ "name": "revertReason",
804
+ "type": "bytes",
805
+ "indexed": false,
806
+ "internalType": "bytes"
807
+ }
808
+ ],
809
+ "anonymous": false
810
+ },
811
+ {
812
+ "type": "event",
813
+ "name": "SignatureAggregatorChanged",
814
+ "inputs": [
815
+ {
816
+ "name": "aggregator",
817
+ "type": "address",
818
+ "indexed": true,
819
+ "internalType": "address"
820
+ }
821
+ ],
822
+ "anonymous": false
823
+ },
824
+ {
825
+ "type": "event",
826
+ "name": "StakeLocked",
827
+ "inputs": [
828
+ {
829
+ "name": "account",
830
+ "type": "address",
831
+ "indexed": true,
832
+ "internalType": "address"
833
+ },
834
+ {
835
+ "name": "totalStaked",
836
+ "type": "uint256",
837
+ "indexed": false,
838
+ "internalType": "uint256"
839
+ },
840
+ {
841
+ "name": "unstakeDelaySec",
842
+ "type": "uint256",
843
+ "indexed": false,
844
+ "internalType": "uint256"
845
+ }
846
+ ],
847
+ "anonymous": false
848
+ },
849
+ {
850
+ "type": "event",
851
+ "name": "StakeUnlocked",
852
+ "inputs": [
853
+ {
854
+ "name": "account",
855
+ "type": "address",
856
+ "indexed": true,
857
+ "internalType": "address"
858
+ },
859
+ {
860
+ "name": "withdrawTime",
861
+ "type": "uint256",
862
+ "indexed": false,
863
+ "internalType": "uint256"
864
+ }
865
+ ],
866
+ "anonymous": false
867
+ },
868
+ {
869
+ "type": "event",
870
+ "name": "StakeWithdrawn",
871
+ "inputs": [
872
+ {
873
+ "name": "account",
874
+ "type": "address",
875
+ "indexed": true,
876
+ "internalType": "address"
877
+ },
878
+ {
879
+ "name": "withdrawAddress",
880
+ "type": "address",
881
+ "indexed": false,
882
+ "internalType": "address"
883
+ },
884
+ {
885
+ "name": "amount",
886
+ "type": "uint256",
887
+ "indexed": false,
888
+ "internalType": "uint256"
889
+ }
890
+ ],
891
+ "anonymous": false
892
+ },
893
+ {
894
+ "type": "event",
895
+ "name": "UserOperationEvent",
896
+ "inputs": [
897
+ {
898
+ "name": "userOpHash",
899
+ "type": "bytes32",
900
+ "indexed": true,
901
+ "internalType": "bytes32"
902
+ },
903
+ {
904
+ "name": "sender",
905
+ "type": "address",
906
+ "indexed": true,
907
+ "internalType": "address"
908
+ },
909
+ {
910
+ "name": "paymaster",
911
+ "type": "address",
912
+ "indexed": true,
913
+ "internalType": "address"
914
+ },
915
+ {
916
+ "name": "nonce",
917
+ "type": "uint256",
918
+ "indexed": false,
919
+ "internalType": "uint256"
920
+ },
921
+ {
922
+ "name": "success",
923
+ "type": "bool",
924
+ "indexed": false,
925
+ "internalType": "bool"
926
+ },
927
+ {
928
+ "name": "actualGasCost",
929
+ "type": "uint256",
930
+ "indexed": false,
931
+ "internalType": "uint256"
932
+ },
933
+ {
934
+ "name": "actualGasUsed",
935
+ "type": "uint256",
936
+ "indexed": false,
937
+ "internalType": "uint256"
938
+ }
939
+ ],
940
+ "anonymous": false
941
+ },
942
+ {
943
+ "type": "event",
944
+ "name": "UserOperationPrefundTooLow",
945
+ "inputs": [
946
+ {
947
+ "name": "userOpHash",
948
+ "type": "bytes32",
949
+ "indexed": true,
950
+ "internalType": "bytes32"
951
+ },
952
+ {
953
+ "name": "sender",
954
+ "type": "address",
955
+ "indexed": true,
956
+ "internalType": "address"
957
+ },
958
+ {
959
+ "name": "nonce",
960
+ "type": "uint256",
961
+ "indexed": false,
962
+ "internalType": "uint256"
963
+ }
964
+ ],
965
+ "anonymous": false
966
+ },
967
+ {
968
+ "type": "event",
969
+ "name": "UserOperationRevertReason",
970
+ "inputs": [
971
+ {
972
+ "name": "userOpHash",
973
+ "type": "bytes32",
974
+ "indexed": true,
975
+ "internalType": "bytes32"
976
+ },
977
+ {
978
+ "name": "sender",
979
+ "type": "address",
980
+ "indexed": true,
981
+ "internalType": "address"
982
+ },
983
+ {
984
+ "name": "nonce",
985
+ "type": "uint256",
986
+ "indexed": false,
987
+ "internalType": "uint256"
988
+ },
989
+ {
990
+ "name": "revertReason",
991
+ "type": "bytes",
992
+ "indexed": false,
993
+ "internalType": "bytes"
994
+ }
995
+ ],
996
+ "anonymous": false
997
+ },
998
+ {
999
+ "type": "event",
1000
+ "name": "Withdrawn",
1001
+ "inputs": [
1002
+ {
1003
+ "name": "account",
1004
+ "type": "address",
1005
+ "indexed": true,
1006
+ "internalType": "address"
1007
+ },
1008
+ {
1009
+ "name": "withdrawAddress",
1010
+ "type": "address",
1011
+ "indexed": false,
1012
+ "internalType": "address"
1013
+ },
1014
+ {
1015
+ "name": "amount",
1016
+ "type": "uint256",
1017
+ "indexed": false,
1018
+ "internalType": "uint256"
1019
+ }
1020
+ ],
1021
+ "anonymous": false
1022
+ },
1023
+ {
1024
+ "type": "error",
1025
+ "name": "DelegateAndRevert",
1026
+ "inputs": [
1027
+ {
1028
+ "name": "success",
1029
+ "type": "bool",
1030
+ "internalType": "bool"
1031
+ },
1032
+ {
1033
+ "name": "ret",
1034
+ "type": "bytes",
1035
+ "internalType": "bytes"
1036
+ }
1037
+ ]
1038
+ },
1039
+ {
1040
+ "type": "error",
1041
+ "name": "DepositWithdrawalFailed",
1042
+ "inputs": [
1043
+ {
1044
+ "name": "account",
1045
+ "type": "address",
1046
+ "internalType": "address"
1047
+ },
1048
+ {
1049
+ "name": "withdrawAddress",
1050
+ "type": "address",
1051
+ "internalType": "address"
1052
+ },
1053
+ {
1054
+ "name": "amount",
1055
+ "type": "uint256",
1056
+ "internalType": "uint256"
1057
+ },
1058
+ {
1059
+ "name": "revertReason",
1060
+ "type": "bytes",
1061
+ "internalType": "bytes"
1062
+ }
1063
+ ]
1064
+ },
1065
+ {
1066
+ "type": "error",
1067
+ "name": "Eip7702SenderNotDelegate",
1068
+ "inputs": [
1069
+ {
1070
+ "name": "sender",
1071
+ "type": "address",
1072
+ "internalType": "address"
1073
+ }
1074
+ ]
1075
+ },
1076
+ {
1077
+ "type": "error",
1078
+ "name": "Eip7702SenderWithoutCode",
1079
+ "inputs": [
1080
+ {
1081
+ "name": "sender",
1082
+ "type": "address",
1083
+ "internalType": "address"
1084
+ }
1085
+ ]
1086
+ },
1087
+ {
1088
+ "type": "error",
1089
+ "name": "FailedOp",
1090
+ "inputs": [
1091
+ {
1092
+ "name": "opIndex",
1093
+ "type": "uint256",
1094
+ "internalType": "uint256"
1095
+ },
1096
+ {
1097
+ "name": "reason",
1098
+ "type": "string",
1099
+ "internalType": "string"
1100
+ }
1101
+ ]
1102
+ },
1103
+ {
1104
+ "type": "error",
1105
+ "name": "FailedOpWithRevert",
1106
+ "inputs": [
1107
+ {
1108
+ "name": "opIndex",
1109
+ "type": "uint256",
1110
+ "internalType": "uint256"
1111
+ },
1112
+ {
1113
+ "name": "reason",
1114
+ "type": "string",
1115
+ "internalType": "string"
1116
+ },
1117
+ {
1118
+ "name": "inner",
1119
+ "type": "bytes",
1120
+ "internalType": "bytes"
1121
+ }
1122
+ ]
1123
+ },
1124
+ {
1125
+ "type": "error",
1126
+ "name": "FailedSendToBeneficiary",
1127
+ "inputs": [
1128
+ {
1129
+ "name": "beneficiary",
1130
+ "type": "address",
1131
+ "internalType": "address"
1132
+ },
1133
+ {
1134
+ "name": "amount",
1135
+ "type": "uint256",
1136
+ "internalType": "uint256"
1137
+ },
1138
+ {
1139
+ "name": "revertData",
1140
+ "type": "bytes",
1141
+ "internalType": "bytes"
1142
+ }
1143
+ ]
1144
+ },
1145
+ {
1146
+ "type": "error",
1147
+ "name": "InsufficientDeposit",
1148
+ "inputs": [
1149
+ {
1150
+ "name": "currentDeposit",
1151
+ "type": "uint256",
1152
+ "internalType": "uint256"
1153
+ },
1154
+ {
1155
+ "name": "withdrawAmount",
1156
+ "type": "uint256",
1157
+ "internalType": "uint256"
1158
+ }
1159
+ ]
1160
+ },
1161
+ {
1162
+ "type": "error",
1163
+ "name": "InternalFunction",
1164
+ "inputs": []
1165
+ },
1166
+ {
1167
+ "type": "error",
1168
+ "name": "InvalidBeneficiary",
1169
+ "inputs": [
1170
+ {
1171
+ "name": "beneficiary",
1172
+ "type": "address",
1173
+ "internalType": "address"
1174
+ }
1175
+ ]
1176
+ },
1177
+ {
1178
+ "type": "error",
1179
+ "name": "InvalidPaymaster",
1180
+ "inputs": [
1181
+ {
1182
+ "name": "paymaster",
1183
+ "type": "address",
1184
+ "internalType": "address"
1185
+ }
1186
+ ]
1187
+ },
1188
+ {
1189
+ "type": "error",
1190
+ "name": "InvalidPaymasterData",
1191
+ "inputs": [
1192
+ {
1193
+ "name": "paymasterAndDataLength",
1194
+ "type": "uint256",
1195
+ "internalType": "uint256"
1196
+ }
1197
+ ]
1198
+ },
1199
+ {
1200
+ "type": "error",
1201
+ "name": "InvalidPaymasterSignatureLength",
1202
+ "inputs": [
1203
+ {
1204
+ "name": "dataLength",
1205
+ "type": "uint256",
1206
+ "internalType": "uint256"
1207
+ },
1208
+ {
1209
+ "name": "pmSignatureLength",
1210
+ "type": "uint256",
1211
+ "internalType": "uint256"
1212
+ }
1213
+ ]
1214
+ },
1215
+ {
1216
+ "type": "error",
1217
+ "name": "InvalidShortString",
1218
+ "inputs": []
1219
+ },
1220
+ {
1221
+ "type": "error",
1222
+ "name": "InvalidStake",
1223
+ "inputs": [
1224
+ {
1225
+ "name": "msgValue",
1226
+ "type": "uint256",
1227
+ "internalType": "uint256"
1228
+ },
1229
+ {
1230
+ "name": "currentStake",
1231
+ "type": "uint256",
1232
+ "internalType": "uint256"
1233
+ }
1234
+ ]
1235
+ },
1236
+ {
1237
+ "type": "error",
1238
+ "name": "InvalidUnstakeDelay",
1239
+ "inputs": [
1240
+ {
1241
+ "name": "newUnstakeDelaySec",
1242
+ "type": "uint256",
1243
+ "internalType": "uint256"
1244
+ },
1245
+ {
1246
+ "name": "currentUnstakeDelaySec",
1247
+ "type": "uint256",
1248
+ "internalType": "uint256"
1249
+ }
1250
+ ]
1251
+ },
1252
+ {
1253
+ "type": "error",
1254
+ "name": "NotStaked",
1255
+ "inputs": [
1256
+ {
1257
+ "name": "currentStake",
1258
+ "type": "uint256",
1259
+ "internalType": "uint256"
1260
+ },
1261
+ {
1262
+ "name": "unstakeDelaySec",
1263
+ "type": "uint256",
1264
+ "internalType": "uint256"
1265
+ },
1266
+ {
1267
+ "name": "staked",
1268
+ "type": "bool",
1269
+ "internalType": "bool"
1270
+ }
1271
+ ]
1272
+ },
1273
+ {
1274
+ "type": "error",
1275
+ "name": "PostOpReverted",
1276
+ "inputs": [
1277
+ {
1278
+ "name": "returnData",
1279
+ "type": "bytes",
1280
+ "internalType": "bytes"
1281
+ }
1282
+ ]
1283
+ },
1284
+ {
1285
+ "type": "error",
1286
+ "name": "Reentrancy",
1287
+ "inputs": []
1288
+ },
1289
+ {
1290
+ "type": "error",
1291
+ "name": "SenderAddressResult",
1292
+ "inputs": [
1293
+ {
1294
+ "name": "sender",
1295
+ "type": "address",
1296
+ "internalType": "address"
1297
+ }
1298
+ ]
1299
+ },
1300
+ {
1301
+ "type": "error",
1302
+ "name": "SignatureValidationFailed",
1303
+ "inputs": [
1304
+ {
1305
+ "name": "aggregator",
1306
+ "type": "address",
1307
+ "internalType": "address"
1308
+ }
1309
+ ]
1310
+ },
1311
+ {
1312
+ "type": "error",
1313
+ "name": "StakeNotUnlocked",
1314
+ "inputs": [
1315
+ {
1316
+ "name": "withdrawTime",
1317
+ "type": "uint256",
1318
+ "internalType": "uint256"
1319
+ },
1320
+ {
1321
+ "name": "blockTimestamp",
1322
+ "type": "uint256",
1323
+ "internalType": "uint256"
1324
+ }
1325
+ ]
1326
+ },
1327
+ {
1328
+ "type": "error",
1329
+ "name": "StakeWithdrawalFailed",
1330
+ "inputs": [
1331
+ {
1332
+ "name": "account",
1333
+ "type": "address",
1334
+ "internalType": "address"
1335
+ },
1336
+ {
1337
+ "name": "withdrawAddress",
1338
+ "type": "address",
1339
+ "internalType": "address"
1340
+ },
1341
+ {
1342
+ "name": "amount",
1343
+ "type": "uint256",
1344
+ "internalType": "uint256"
1345
+ },
1346
+ {
1347
+ "name": "revertReason",
1348
+ "type": "bytes",
1349
+ "internalType": "bytes"
1350
+ }
1351
+ ]
1352
+ },
1353
+ {
1354
+ "type": "error",
1355
+ "name": "StringTooLong",
1356
+ "inputs": [
1357
+ {
1358
+ "name": "str",
1359
+ "type": "string",
1360
+ "internalType": "string"
1361
+ }
1362
+ ]
1363
+ },
1364
+ {
1365
+ "type": "error",
1366
+ "name": "WithdrawalNotDue",
1367
+ "inputs": [
1368
+ {
1369
+ "name": "withdrawTime",
1370
+ "type": "uint256",
1371
+ "internalType": "uint256"
1372
+ },
1373
+ {
1374
+ "name": "blockTimestamp",
1375
+ "type": "uint256",
1376
+ "internalType": "uint256"
1377
+ }
1378
+ ]
1379
+ }
1380
+ ],
1381
+ "bytecode": "0x6101806040523461019557604051610018604082610199565b600781526020810190664552433433333760c81b82526040519161003d604084610199565b600183526020830191603160f81b8352610056816101bc565b6101205261006384610357565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526100cc60c082610199565b5190206080523060c0526040516103a48082016001600160401b0381118382101761018157829161439c833903905ff080156101765761016052604051613f0c9081610490823960805181612509015260a051816125c6015260c051816124d3015260e051816125580152610100518161257e0152610120518161115b0152610140518161118401526101605181818161101f015281816116b601528181613a1c0152613c6e0152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761018157604052565b908151602081105f14610236575090601f8151116101f65760208151910151602082106101e7571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b03811161018157600254600181811c9116801561034d575b602082101461033957601f8111610306575b50602092601f82116001146102a557928192935f9261029a575b50508160011b915f199060031b1c19161760025560ff90565b015190505f80610281565b601f1982169360025f52805f20915f5b8681106102ee57508360019596106102d6575b505050811b0160025560ff90565b01515f1960f88460031b161c191690555f80806102c8565b919260206001819286850151815501940192016102b5565b60025f52601f60205f20910160051c810190601f830160051c015b81811061032e5750610267565b5f8155600101610321565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610255565b908151602081105f14610382575090601f8151116101f65760208151910151602082106101e7571790565b6001600160401b03811161018157600354600181811c91168015610485575b602082101461033957601f8111610452575b50602092601f82116001146103f157928192935f926103e6575b50508160011b915f199060031b1c19161760035560ff90565b015190505f806103cd565b601f1982169360035f52805f20915f5b86811061043a5750836001959610610422575b505050811b0160035560ff90565b01515f1960f88460031b161c191690555f8080610414565b91926020600181928685015181550194019201610401565b60035f52601f60205f20910160051c810190601f830160051c015b81811061047a57506103b3565b5f815560010161046d565b90607f16906103a156fe6101806040526004361015610024575b3615610019575f80fd5b6100223361228f565b005b5f610140525f3560e01c806242dc531461190057806301ffc9a7146118625780630396cb60146116e557806309ccb8801461169e5780630bd28e3b1461164357806313c65a6e14611626578063154e58dc146115fc5780631b2e01b8146115a4578063205c2878146114c657806322cdde4c1461147f57806335567e1a146114135780635287ce121461132057806370a08231146112e0578063765e827f1461124657806384b0196e14611140578063850aaf62146110b45780639b249f6914610fb8578063b0a398d114610f96578063b760faf914610f7a578063bb9fe6bf14610e9b578063c23a5cea14610d635763dbed18e00361000f5734610bb55761012c36611e6f565b6101005260e05233321480610d5a575b15610d45576101405190815b60e0518110610bd5575061015b82612153565b61012052610140516080526101405160c0525b60e05160c05110610266575f516020613df75f395f51905f526101405161014051a161014051608081905290815b60e05181106101b9576101b2836101005161336a565b6101405180f35b61020e6101c98260e0518561230b565b6001600160a01b036101dd60208301612362565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d6101405161014051a28061232d565b9061014051915b8083106102275750505060010161019c565b90919460019061025461023b888587612205565b61024a6080516101205161223c565b5190608051612fe1565b01958160805101608052019190610215565b61027560c05160e0518361230b565b61027f818061232d565b60a052906001600160a01b039061029890602001612362565b61014051911691905b60a05181106102c55750505060a05160805101608052600160c0510160c05261016e565b6102d681608051016101205161223c565b516102e48260a05185612205565b61014051915a8151926001600160a01b036102fe82612362565b168452602081810135908501526001600160801b036080808301358281166060880152811c604087015260a083013560c0808801919091528301359182166101008701521c61012085015261035660e0820182612376565b9081610b41575b50506040519361036c8261203f565b6020850152846040526040810151948560c08301511760608301511760808301511760a0830151176101008301511760018060781b03906101208401511711610af95750604081015160608201510160808201510160a08201510160c0820151016101008201510294856040860152845160018060a01b03815116906104046103f86040870187612376565b90898d6080510161399b565b60e001516101405197906001600160a01b03168015610ac8575b8751604080820151915190516020808c01516306608bdf60e21b918301918252919c6001600160a01b03909316939290918d9161045f918c60248501613d50565b03601f1981018d52610471908d611da2565b61014051908c5190846101405190602095f161014051519a3d602003610abd575b60405215610a0f5750156109b0575b505060018060a01b03825116602083015190610140515260016020526040610140512060018060c01b038260401c165f5260205260405f20908154916104e683611fa9565b90556001600160401b031603610963575a8403116109265760e001516060906001600160a01b031661070a575b606084015261053293929160809160a00135905a9003019101526137cd565b916001600160a01b031686036106c35761063a5750610550906137cd565b916001600160a01b03166105f35761056b57506001016102a1565b6105b65760408051631101335b60e11b815260805190920160048301526024820152602160448201525f516020613e175f395f51905f526064820152606560f81b608482015260a490fd5b60408051631101335b60e11b815260805190920160048301526024820152602060448201525f516020613e575f395f51905f526064820152608490fd5b60848360405190631101335b60e11b825260805101600482015260406024820152601460448201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b826084916106895760408051631101335b60e11b8152608051909201600483015260248201526017604482015276414132322065787069726564206f72206e6f742064756560481b6064820152fd5b60408051631101335b60e11b815260805190920160048301526024820152601e60448201525f516020613e975f395f51905f526064820152fd5b60848460405190631101335b60e11b825260805101600482015260406024820152601460448201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b94505a835160e0810151604086015192979261072e916001600160a01b0316613d72565b156108e9576080015195604051966020860151976107768161076860408a0151602083019c8d6314add44b60e21b90528960248501613d50565b03601f198101835282611da2565b8651608060018060a01b0360e08301511691015161014051918b61014051928551926101405191f1983d908161014051843e519482519a604084019b8c519115610890576040149081159161087c575b506108235750601f01601f1916016040819052915a9003116107e9575094610513565b631101335b60e11b81526080518801600482015260406024820152602060448201525f516020613dd75f395f51905f526064820152608490fd5b8b61087861082f6124a3565b6040519384936365c8fd4d60e01b85526080510160048501526024840152601d60648401525f516020613e775f395f51905f52608484015260a0604484015260a4830190611ed5565b0390fd5b601f01601f1916820183141590505f6107c6565b828e61087861089d6124a3565b6040519384936365c8fd4d60e01b85526080510160048501526024840152600d60648401526c10504cccc81c995d995c9d1959609a1b608484015260a0604484015260a4830190611ed5565b60848860405190631101335b60e11b825260805101600482015260406024820152601e60448201525f516020613db75f395f51905f526064820152fd5b60848760405190631101335b60e11b825260805101600482015260406024820152601e60448201525f516020613d975f395f51905f526064820152fd5b60848860405190631101335b60e11b825260805101600482015260406024820152601a6044820152794141323520696e76616c6964206163636f756e74206e6f6e636560301b6064820152fd5b6109b991613d72565b156109c5578b806104a1565b60848860405190631101335b60e11b825260805101600482015260406024820152601760448201527610504c8c48191a591b89dd081c185e481c1c99599d5b99604a1b6064820152fd5b8b903b610a625760408051631101335b60e11b815260805190920160048301526024820152601960448201527810504c8c081858d8dbdd5b9d081b9bdd0819195c1b1bde5959603a1b6064820152608490fd5b610a6a6124a3565b6040516365c8fd4d60e01b8152608051909201600483015260606024830152600d60648301526c10504c8cc81c995d995c9d1959609a1b608483015260a0604483015281906108789060a4830190611ed5565b610140519150610492565b6101408051849052516020819052604090205490985081811115610af25750610140515b9761041e565b8103610aec565b631101335b60e11b81526080518801600482015260406024820152601860448201527741413934206761732076616c756573206f766572666c6f7760401b6064820152608490fd5b60348210610bbc5781601411610bb55780359160248110610bb557603411610bb5576024810135608090811c60a0880152601490910135811c90860152606081901c15610b975760601c60e0850152898061035d565b6101408051636c66594960e11b905260609190911c60045251602490fd5b6101405180fd5b5063120aaab560e01b6101405152600452602461014051fd5b610be28160e0518461230b565b92610bed848061232d565b91906001600160a01b03610c0360208801612362565b169560018714610d2c5786610c20575b5050019250600101610148565b806040610c2e920190612376565b91873b15610bb55791604051928391632dd8113360e01b835286604484016040600486015252606483019160648860051b85010192816101405161011e1982360301915b8b8210610cf05750505050508291610c9a91600319848303016024850152610140519561226f565b0381610140518a5af19081610cd5575b50610cc8578463086a9f7560e41b6101405152600452602461014051fd5b929350839260015f610c13565b61014051610ce291611da2565b61014051610bb5575f610caa565b91939650919394606319898203018552863584811215610bb5576020610d1b600193858394016123da565b980195019201889695949391610c72565b8663086a9f7560e41b6101405152600452602461014051fd5b63558a1e0360e11b6101405152600461014051fd5b50333b1561013c565b34610bb5576020366003190112610bb557610d7c611e16565b33610140515261014051602052600160406101405120019081549165ffffffffffff60018060701b038460081c1693610dc560ff821663ffffffff8360781c16878015156122d1565b60981c168015610e7f57428111610e6357508054610100600160c81b031916905560405133907fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda39080610e19868683611fc4565b0390a261014051808080856001600160a01b0386165af1610e38611fdf565b9015610e45576101405180f35b61087890604051938493630373c21f60e21b8552336004860161200e565b632b0e998960e11b610140515260045242602452604461014051fd5b637de810eb60e11b610140515260045242602452604461014051fd5b34610bb55761014051366003190112610bb55733610140515261014051602052600160406101405120018054610efb63ffffffff8260781c16918260ff60018060701b038360081c16921691610ef58383838115156122d1565b826122d1565b65ffffffffffff4216019065ffffffffffff8211610f6057610f1d8282611f82565b60ff19815416905565ffffffffffff604051911681527ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a60203392a26101405180f35b634e487b7160e01b61014051526011600452602461014051fd5b6020366003190112610bb5576101b2610f91611e16565b61228f565b34610bb55761014051366003190112610bb5576020610140515c604051908152f35b34610bb5576020366003190112610bb5576004356001600160401b038111610bb5576020610fed611010923690600401611e2c565b604051632b870d1b60e11b8152600481018490529384928392602484019161226f565b03816101405160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156110a6576101405191611077575b506101408051633653dc0360e11b90526001600160a01b039190911660045251602490fd5b611099915060203d60201161109f575b6110918183611da2565b810190612250565b81611052565b503d611087565b6040513d61014051823e3d90fd5b34610bb5576040366003190112610bb5576110cd611e16565b6024356001600160401b038111610bb5576110ec903690600401611e2c565b604051929181908437820190610140518252610140519280610140519303915af4611115611fdf565b60408051632650415560e21b8152921515600484015260248301528190610878906044830190611ed5565b34610bb55761014051366003190112610bb5576111e461117f7f0000000000000000000000000000000000000000000000000000000000000000613591565b6111a87f00000000000000000000000000000000000000000000000000000000000000006136b7565b604051906020906111f2906111bd8385611da2565b6101405184525f368137604051958695600f60f81b875260e08588015260e0870190611ed5565b908582036040870152611ed5565b4660608501523060808501526101405160a085015283810360c0850152818084519283815201930191610140515b82811061122f57505050500390f35b835185528695509381019392810192600101611220565b34610bb55761125436611e6f565b919091333214806112d7575b15610d455761126e83612153565b6112798185856126c0565b5061014051925f516020613df75f395f51905f528480a161014051915b8583106112a7576101b2858561336a565b9091936001906112cd6112bb878987612205565b6112c5888661223c565b519088612fe1565b0194019190611296565b50333b15611260565b34610bb5576020366003190112610bb5576001600160a01b03611301611e16565b1661014051526101405160205260206040610140512054604051908152f35b34610bb5576020366003190112610bb557611339611e16565b60405161134581611d3c565b61014051815261014051602082015261014051604082015261014051606082015260806101405191015260018060a01b031661014051526101405160205260a06040610140512065ffffffffffff60405161139f81611d3c565b63ffffffff60018454948584520154916020810160ff841615158152604082019060018060701b038560081c1682528560806060850194868860781c168652019560981c168552604051968752511515602087015260018060701b0390511660408601525116606084015251166080820152f35b34610bb5576040366003190112610bb557602061142e611e16565b611436611e59565b61014080516001600160a01b039093169092526001835290516040908190206001600160c01b0383165f9081529084528190205481519290911b6001600160401b031916178152f35b34610bb5576020366003190112610bb5576004356001600160401b038111610bb5576101206003198236030112610bb5576114be60209160040161203f565b604051908152f35b34610bb5576040366003190112610bb5576114df611e16565b602435903361014051526101405160205260406101405120828154808211611589579061150b91611fb7565b90556040517fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb33918061153f868683611fc4565b0390a261014051808080856001600160a01b0386165af161155e611fdf565b901561156b576101405180f35b61087890604051938493639f3d693360e01b8552336004860161200e565b6312e1fa3760e11b6101405152600452602452604461014051fd5b34610bb5576040366003190112610bb5576115bd611e16565b6115c5611e59565b9060018060a01b031661014051526001602052604061014051209060018060c01b03165f52602052602060405f2054604051908152f35b34610bb55761014051366003190112610bb55760206040515f516020613e375f395f51905f528152f35b34610bb55761014051366003190112610bb55760206114be6124d0565b34610bb5576020366003190112610bb5576004356001600160c01b0381168103610bb5573361014051526001602052604061014051209060018060c01b03165f5260205260405f206116958154611fa9565b90556101405180f35b34610bb55761014051366003190112610bb5576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6020366003190112610bb55760043563ffffffff8116808203610bb5573361014051526101405160205261182a604061014051209261174460018501549163ffffffff8360781c169061173b8282881515611f13565b81861015611f13565b60081c6001600160701b03169261177d61175e3486611f3b565b9461176c8134881515611f5c565b346001600160701b03871115611f5c565b546040519061178b82611d3c565b8152600160208083018281526001600160701b0387166040808601918252606086018881526101408051608089019081528151339052905195869052919094209551865591519490930180549351925163ffffffff60781b60789190911b16610100600160781b0360089490941b9390931694151560ff166001600160981b03199094169390931793909317178155905165ffffffffffff1690611f82565b60405191825260208201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a26101405180f35b34610bb5576020366003190112610bb55760043563ffffffff60e01b8116809103610bb55760209063d9934b3f60e01b81149081156118ef575b81156118de575b81156118cd575b81156118bc575b506040519015158152f35b6301ffc9a760e01b149050826118b1565b633e84f02160e01b811491506118aa565b63cf28ef9760e01b811491506118a3565b63283f548960e01b8114915061189c565b34611c6057610200366003190112611c60576004356001600160401b038111611c605736602382011215611c6057611942903690602481600401359101611de0565b36602319016101c08112611c60576101406040519161196083611d3c565b12611c605760405161197181611d6b565b6024356001600160a01b0381168103611c6057815260443560208201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c0820152610104356001600160a01b0381168103611c605760e082015261012435610100820152610144356101208201528152610164356020820190815261018435604083019081526101a43560608401526101c435608084019081529193906101e4356001600160401b038111611c6057611a32903690600401611e2c565b955a90303303611d2d578651606081015195603f5a0260061c61271060a084015189010111611d1e575f9681519182611c80575b505050505090611a7e915a9003855101963691611de0565b925a93855161010081015161012082015148018082105f14611c785750975b611abc60018060a01b0360e084015116945182036060840151906133f4565b01925f9281611b6e575050516001600160a01b0316945b5a900301019485029051928184105f14611b3f5750506003811015611b2557600203611b1057602092816114be9293611b0b816134b7565b613413565b63deadaa5160e01b6101405152602061014051fd5b634e487b7160e01b61014051526021600452602461014051fd5b81611b5092959496939603906133d8565b506003841015611b255782611b69926020951590613465565b6114be565b909691878251611b81575b505050611ad3565b90919293505a926003881015611c645760028803611bb7575b505060a0611bae925a9003910151906133f4565b90888080611b79565b60a083015191803b15611c60578b925f9283611bfa938c8b88604051998a9889978895637c627b2160e01b87526004870152608060248701526084860190611ed5565b9202604484015260648301520393f19081611c4b575b50611c4157610878611c206124a3565b604051632b5e552f60e21b8152602060048201529182916024830190611ed5565b60a0611bae611b9a565b5f611c5591611da2565b5f610140528a611c10565b5f80fd5b634e487b7160e01b5f52602160045260245ffd5b905097611a9d565b915f9291838093602060018060a01b03885116910192f115611ca5575b808080611a66565b611a7e9392955060405191611cb86124a3565b908151611cd1575b505050604052600193909188611c9d565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201905191602060018060a01b03855116940151611d1360405192839283611ef9565b0390a3888080611cc0565b63deaddead60e01b5f5260205ffd5b639fbdaa0960e01b5f5260045ffd5b60a081019081106001600160401b03821117611d5757604052565b634e487b7160e01b5f52604160045260245ffd5b61014081019081106001600160401b03821117611d5757604052565b606081019081106001600160401b03821117611d5757604052565b601f909101601f19168101906001600160401b03821190821017611d5757604052565b6001600160401b038111611d5757601f01601f191660200190565b929192611dec82611dc5565b91611dfa6040519384611da2565b829481845281830111611c60578281602093845f960137010152565b600435906001600160a01b0382168203611c6057565b9181601f84011215611c60578235916001600160401b038311611c605760208381860195010111611c6057565b602435906001600160c01b0382168203611c6057565b906040600319830112611c60576004356001600160401b038111611c605760040182601f82011215611c60578035926001600160401b038411611c60576020808301928560051b010111611c605791906024356001600160a01b0381168103611c605790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b604090611f10939281528160208201520190611ed5565b90565b15611f1c575050565b9063ffffffff80926370c11de760e11b5f52166004521660245260445ffd5b91908201809211611f4857565b634e487b7160e01b5f52601160045260245ffd5b15611f65575050565b630384002760e21b5f5260045260018060701b031660245260445ffd5b805465ffffffffffff60981b191660989290921b65ffffffffffff60981b16919091179055565b5f198114611f485760010190565b91908203918211611f4857565b6001600160a01b039091168152602081019190915260400190565b3d15612009573d90611ff082611dc5565b91611ffe6040519384611da2565b82523d5f602084013e565b606090565b6001600160a01b039182168152911660208201526040810191909152608060608201819052611f1092910190611ed5565b60429061204b81612604565b6120536124d0565b9161205d81612362565b91801561211f57905b60c06120756060830183612376565b9081604051918237209161209561208f60e0830183612376565b90613787565b926040519460208601965f516020613e375f395f51905f52885260018060a01b0316604087015260208301356060870152608086015260a085015260808101358285015260a081013560e08501520135610100830152610120820152610120815261210261014082611da2565b5190206040519161190160f01b8352600283015260228201522090565b5061212d6040820182612376565b90816040519182372090612066565b6001600160401b038111611d575760051b60200190565b9061215d8261213c565b61216a6040519182611da2565b828152809261217b601f199161213c565b01905f5b82811061218b57505050565b60209060405161219a81611d3c565b6040516121a681611d6b565b5f81525f848201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f61012082015281525f838201525f60408201525f60608201525f60808201528282850101520161217f565b91908110156122285760051b8101359061011e1981360301821215611c60570190565b634e487b7160e01b5f52603260045260245ffd5b80518210156122285760209160051b010190565b90816020910312611c6057516001600160a01b0381168103611c605790565b908060209392818452848401375f828201840152601f01601f1916010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206122bc34846133d8565b6040519081526001600160a01b0390931692a2565b156122db57505050565b638421e8e560e01b5f9081526001600160701b0390911660045263ffffffff909116602452901515604452606490fd5b91908110156122285760051b81013590605e1981360301821215611c60570190565b903590601e1981360301821215611c6057018035906001600160401b038211611c6057602001918160051b36038313611c6057565b356001600160a01b0381168103611c605790565b903590601e1981360301821215611c6057018035906001600160401b038211611c6057602001918136038313611c6057565b9035601e1982360301811215611c60570160208101919035906001600160401b038211611c60578136038313611c6057565b8035916001600160a01b0383168303611c60576001600160a01b03909216825260208181013590830152611f109161249461248861244f61243461242160408701876123a8565b610120604088015261012087019161226f565b61244160608701876123a8565b90868303606088015261226f565b6080850135608085015260a085013560a085015260c085013560c085015261247a60e08601866123a8565b9085830360e087015261226f565b926101008101906123a8565b9161010081850391015261226f565b3d61080081116124c7575b604051906020818301016040528082525f602083013e90565b506108006124ae565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c3575b1561252b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526125bd60c082611da2565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612502565b90939293848311611c60578411611c60578101920390565b6126116040820182612376565b909161261d82846134f9565b156126b95761262e61263391612362565b61351b565b916014821161266857505060405160609190911b6001600160601b0319166020820190815260148252906125bd603482611da2565b81601411611c605760405160609390931b6001600160601b03191660208481019182529093926125bd92849190601319820190601401603484013781015f838201520301601f198101835282611da2565b5050505f90565b92919092835f5b8181106126d45750505050565b6126de818561223c565b516126ea828486612205565b5f915a8151906001600160a01b0361270185612362565b1682526020820191602085013583526080850135948560801c9560018060801b031693604083019660608401958652875260a08201359460c0840186815260c0840135908160801c9160018060801b0316916101208701906101008801938452815261277060e0870187612376565b80612ecc575b50506040516127848761203f565b9460208c01958652816040528c519c8d8551178251179260808b01938451179460a08c019586511788511760018060781b0391511711612e855750519051019051019051019051019051029760408801928984528b89516127ff8b60018060a01b03835116936127f760408b018b612376565b92909161399b565b60e001515f9b906001600160a01b03168015612e5e575b8b519c60408e01519d600160a01b600190039051169d8e916040516101605288518b61016051602001926306608bdf60e21b84526101605192610160516024019261286093613d50565b03601f1981016101605152610160519061287991611da2565b6101605151905f6020948194f19c5f519d3d602003612e57575b6101605160405215612db2575015612d57575b5050855190516001600160a01b039091165f90815260016020908152604080832084821c84529091529020805491906128de83611fa9565b90556001600160401b031603612d0e575a860311612cd55760e090930151606093906001600160a01b0316612ae9575b505050606084015261292b9392916080915a9003019101526137cd565b916001600160a01b0316612aa657612a255750612947906137cd565b916001600160a01b03166129e25761296257506001016126c7565b6129a95760a49060405190631101335b60e11b8252600482015260406024820152602160448201525f516020613e175f395f51905f526064820152606560f81b6084820152fd5b60849060405190631101335b60e11b8252600482015260406024820152602060448201525f516020613e575f395f51905f526064820152fd5b60848360405190631101335b60e11b8252600482015260406024820152601460448201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b82608491612a705760405190631101335b60e11b82526004820152604060248201526017604482015276414132322065787069726564206f72206e6f742064756560481b6064820152fd5b60405190631101335b60e11b8252600482015260406024820152601e60448201525f516020613e975f395f51905f526064820152fd5b60848460405190631101335b60e11b8252600482015260406024820152601460448201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b6064820152fd5b909197505a865160e08101518451929492612b0c916001600160a01b0316613d72565b15612c9c576080612b409101519261076860405193849251905190602084019d8e6314add44b60e21b905260248501613d50565b5f8088518b82608060018060a01b0360e08501511693015192865193f1983d90815f843e519482519a604084019b8c519115612c475760401490811591612c33575b50612be25750601f01601f1916016040819052915a900311612bab5750948161292b608061290e565b631101335b60e11b81526004810188905260406024820152602060448201525f516020613dd75f395f51905f526064820152608490fd5b8b610878612bee6124a3565b6040519384936365c8fd4d60e01b855260048501526024840152601d60648401525f516020613e775f395f51905f52608484015260a0604484015260a4830190611ed5565b601f01601f1916820183141590505f612b82565b828e610878612c546124a3565b6040519384936365c8fd4d60e01b855260048501526024840152600d60648401526c10504cccc81c995d995c9d1959609a1b608484015260a0604484015260a4830190611ed5565b60848b60405190631101335b60e11b8252600482015260406024820152601e60448201525f516020613db75f395f51905f526064820152fd5b60848a60405190631101335b60e11b8252600482015260406024820152601e60448201525f516020613d975f395f51905f526064820152fd5b60848b60405190631101335b60e11b8252600482015260406024820152601a6044820152794141323520696e76616c6964206163636f756e74206e6f6e636560301b6064820152fd5b612d6091613d72565b15612d6c575f806128a6565b60848c60405190631101335b60e11b8252600482015260406024820152601760448201527610504c8c48191a591b89dd081c185e481c1c99599d5b99604a1b6064820152fd5b8f903b612e015760849060405190631101335b60e11b8252600482015260406024820152601960448201527810504c8c081858d8dbdd5b9d081b9bdd0819195c1b1bde5959603a1b6064820152fd5b612e096124a3565b906108786040519283926365c8fd4d60e01b8452600484015260606024840152600d60648401526c10504c8cc81c995d995c9d1959609a1b608484015260a0604484015260a4830190611ed5565b505f612893565b9b50815f525f60205260405f20548181115f14612e7e57505f5b9b612816565b8103612e78565b90508f60849250631101335b60e11b8252600482015260406024820152601860448201527741413934206761732076616c756573206f766572666c6f7760401b6064820152fd5b60348110612f305780601411611c6057813560601c9160248210611c6057601481013591603411611c605760240135608090811c60a08b015290811c908901528015612f1e5760e08801525f80612776565b636c66594960e11b5f5260045260245ffd5b63120aaab560e01b5f5260045260245ffd5b60806101a091610120815160018060a01b038151168652602081015160208701526040810151604087015260608101516060870152838101518487015260a081015160a087015260c081015160c087015260018060a01b0360e08201511660e087015261010081015161010087015201516101208501526020810151610140850152604081015161016085015260608101516101808501520151910152565b9092915a6020820180515f5d60608301519060405196876130056060830183612376565b5f60038211613362575b6001600160e01b031916638dd7712f60e01b036132ff575050505f6130996130b961305e6130726020958751604051938492638dd7712f60e01b8a8501526040602485015260648401906123da565b90604483015203601f198101835282611da2565b6107686040519384926242dc5360e01b888501526102006024850152610224840190611ed5565b6130a6604484018c612f42565b8281036023190161020484015288611ed5565b828151910182305af15f5197604052156130d5575b5050505050565b909192939495505f3d6020146132f2575b63deaddead60e01b81036131325760848660405190631101335b60e11b8252600482015260406024820152600f60448201526e41413935206f7574206f662067617360881b6064820152fd5b939450919290919063deadaa5160e01b0361318157505061316561315a613175925a90611fb7565b608084015190611f3b565b604083015183611b0b82956134b7565b905b5f808080806130ce565b916131e4919260405190518551907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f4792602060018060a01b038451169301516131c76124a3565b906131d760405192839283611ef9565b0390a36040525a90611fb7565b6131f46080840191825190611f3b565b915f905a92855161010081015161012082015148018082105f146132ea5750955b61323460018060a01b0360e084015116935182036060840151906133f4565b01925f92806132bb575050516001600160a01b0316935b5a900301019283026040850151928184105f14613294575050806132805750908161327a9293611b0b816134b7565b90613177565b634e487b7160e01b81526021600452602490fd5b6132a490828493979503906133d8565b50613280575090825f6132b693613465565b61327a565b959190516132ca575b5061324b565b935090506132e35a9360a05f955a9003910151906133f4565b905f6132c4565b905095613215565b5060205f803e5f516130e6565b6242dc5360e01b60208401526102006024840152613359935061334b9161332b9161022485019161226f565b6133386044840189612f42565b8281036023190161020484015285611ed5565b03601f198101895288611da2565b60205f886130b9565b50813561300f565b6001600160a01b031680156133c6575f805d5f80808085855af161338c611fdf565b901561339757505050565b610878906040519384936340848e6160e01b855260048501526024840152606060448401526064830190611ed5565b631a3b45fd60e01b5f5260045260245ffd5b60018060a01b03165f525f60205260405f209081540180915590565b90619c40820181111561340d57606491600a9103020490565b50505f90565b9190915f516020613eb75f395f51905f526080602083015192519460018060a01b0386511694602060018060a01b0360e089015116970151916040519283525f602084015260408301526060820152a4565b9060805f516020613eb75f395f51905f5291602084015193519560018060a01b0387511695602060018060a01b0360e08a015116980151926040519384521515602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208060018060a01b03855116940151604051908152a3565b9060021161351657356001600160601b031916613b8160f11b1490565b505f90565b60175f80833c5f51906110ff60f01b6001600160e81b031983160161354a575060481c6001600160a01b031690565b803b1561357157639f4e4cc960e01b5f9081526001600160a01b0391909116600452602490fd5b63e5819b9560e01b5f9081526001600160a01b0391909116600452602490fd5b60ff81146135d75760ff811690601f82116135c857604051916135b5604084611da2565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b506040515f6002548060011c91600182169182156136ad575b60208410831461369957838552849290811561367a575060011461361b575b611f1092500382611da2565b5060025f90815290917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b81831061365e575050906020611f109282010161360f565b6020919350806001915483858801015201910190918392613646565b60209250611f1094915060ff191682840152151560051b82010161360f565b634e487b7160e01b5f52602260045260245ffd5b92607f16926135f0565b60ff81146136db5760ff811690601f82116135c857604051916135b5604084611da2565b506040515f6003548060011c916001821691821561377d575b60208410831461369957838552849290811561367a575060011461371e57611f1092500382611da2565b5060035f90815290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b818310613761575050906020611f109282010161360f565b6020919350806001915483858801015201910190918392613749565b92607f16926136f4565b61379182826138bb565b806137a25750816040519182372090565b604051920390600919820190833767117192d14ba1cb2b60c11b828201600919015260011901902090565b80156138b2575f604080516137e181611d87565b8281526020810183905201526001600160a01b0381169060a081901c65ffffffffffff169081156138a4575b60409060d01c91815161381f81611d87565b8481526020810184905265ffffffffffff821692018290526001602f1b83101580613896575b1561387957657fffffffffff9150164311908115613866575b509060019092565b657fffffffffff9150164311155f61385e565b50421190811561388b575b50905f9092565b90504211155f613884565b506001602f1b821015613845565b65ffffffffffff915061380d565b505f905f905f90565b603e821061340d576138d382600719810181846125ec565b6001600160c01b03199135918216916008821061397b575b50506001600160c01b031916676e8e6d2eb45e34d560c11b0161340d578161391991816009198101916125ec565b6001600160f01b03199135918216916002821061395b575b505060f01c90603d1981018211613946575090565b6307b9a19160e01b5f5260045260245260445ffd5b6001600160f01b031960029290920360031b82901b161690505f80613931565b6001600160c01b031960089290920360031b82901b161690505f806138eb565b929091925f826139ac575050505050565b835180516001600160a01b031695906139c585836134f9565b613c4b575060148410613c055783601411613c0157803560601c93863b613bcb57613a18916020916040885101519085604051809681958294632b870d1b60e11b8452886004850152602484019161226f565b03927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690f1918215613bbf5791613ba0575b506001600160a01b0381168015613b56578503613b0a573b15613abe575060407fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d9160208401519360e060018060a01b03915101511682519182526020820152a35f808080806130ce565b60849060405190631101335b60e11b8252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848260405190631101335b60e11b8252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848360405190631101335b60e11b8252600482015260406024820152601b60448201527a4141313320696e6974436f6465206661696c6564206f72204f4f4760281b6064820152fd5b613bb9915060203d60201161109f576110918183611da2565b5f613a53565b604051903d90823e3d90fd5b50505050906020807fa39bcda08ffd11bafb11c4f170ef24fc6dc1a9d1b0394d90dbd19e0b919050e992015192604051908152a3565b5080fd5b60848360405190631101335b60e11b8252600482015260406024820152601760448201527610504e4e481a5b9a5d10dbd919481d1bdbc81cdb585b1b604a1b6064820152fd5b9195949390925060148111613c63575b505050505050565b604060018060a01b037f00000000000000000000000000000000000000000000000000000000000000001692015181601411611c6057823b15611c6057613cd9935f809460405180978196829563c09ad0d960e01b84528c6004850152604060248501526014604485019260131901910161226f565b0393f18015613d4557613d30575b507f7c9f9ade6a03a0bba484e52df872467a270e798ffc1adab9dfaa8d0e627f05446020613d148461351b565b9201516001600160a01b039092169380a45f8080808080613c5b565b613d3d9193505f90611da2565b5f915f613ce7565b6040513d5f823e3d90fd5b613d68604092959493956060835260608301906123da565b9460208201520152565b60018060a01b03165f525f60205260405f209081548181106126b95703905560019056fe41413236206f76657220766572696669636174696f6e4761734c696d6974000041413331207061796d6173746572206465706f73697420746f6f206c6f77000041413336206f76657220706d566572696669636174696f6e4761734c696d6974bb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97241413332207061796d61737465722065787069726564206f72206e6f7420647529a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e41413337207061796d617374657220696e76616c20626c6f636b2072616e676541413335206d616c666f726d6564207061796d6173746572206461746100000041413237206f7574736964652076616c696420626c6f636b2072616e6765000049628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419fa2646970667358221220e358b8d7d86f46202a6c6fb60cc1850637d2693226428cb183464bbd0b5709f064736f6c634300081c003360a08060405234602f57336080526103709081610034823960805181818160970152818161019301526102160152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063570e1a36146101c2578063b0d691fe1461017e5763c09ad0d91461003a575f80fd5b3461017a57604036600319011261017a576004356001600160a01b038116810361017a576024356001600160401b03811161017a573660238201121561017a575f916100918392369060248160040135910161029a565b906100c97f000000000000000000000000000000000000000000000000000000000000000030336001600160a01b0383168114610304565b82602083519301915af1156100da57005b3d6108008111610171575b60c460405160208382010160405282815260208101925f843e6040519283916365c8fd4d60e01b83525f600484015260606024840152601f60648401527f4141313320454950373730322073656e64657220696e6974206661696c656400608484015260a060448401525180918160a48501528484015e5f828201840152601f01601f19168101030190fd5b506108006100e5565b5f80fd5b3461017a575f36600319011261017a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461017a57602036600319011261017a576004356001600160401b03811161017a573660238201121561017a576004810135906001600160401b03821161017a57366024838301011161017a575f916102487f000000000000000000000000000000000000000000000000000000000000000030336001600160a01b0383168114610304565b8060141161017a576020916102675f923690601319016038840161029a565b90826024858451940192013560601c5af1610292575b6040516001600160a01b039091168152602090f35b505f5161027d565b9192916001600160401b0382116102f05760405191601f8101601f19908116603f011683016001600160401b038111848210176102f05760405282948184528183011161017a578281602093845f960137010152565b634e487b7160e01b5f52604160045260245ffd5b1561030e57505050565b63fe34a6d360e01b5f9081526001600160a01b0391821660045291811660245291909116604452606490fdfea264697066735822122096d692b1528737701f5ba5b3263e189297f7691543036742bdccc75be0644a7964736f6c634300081c0033"
1382
+ }