@ensuro/core 2.8.1 → 2.8.2

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 (41) hide show
  1. package/build/contracts/AccessManager.sol/AccessManager.json +618 -0
  2. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +238 -0
  3. package/build/contracts/EToken.sol/EToken.json +1287 -0
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +657 -0
  5. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +222 -0
  6. package/build/contracts/Policy.sol/Policy.json +10 -0
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +1775 -0
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +342 -0
  9. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +1142 -0
  10. package/build/contracts/Reserve.sol/Reserve.json +413 -0
  11. package/build/contracts/RiskModule.sol/RiskModule.json +589 -0
  12. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +1251 -0
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +1145 -0
  14. package/build/contracts/TimeScaled.sol/TimeScaled.json +10 -0
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +1143 -0
  16. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +10 -0
  17. package/build/contracts/interfaces/IAccessManager.sol/IAccessManager.json +343 -0
  18. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +128 -0
  19. package/build/contracts/interfaces/IEToken.sol/IEToken.json +460 -0
  20. package/build/contracts/interfaces/ILPWhitelist.sol/ILPWhitelist.json +103 -0
  21. package/build/contracts/interfaces/IPolicyHolder.sol/IPolicyHolder.json +108 -0
  22. package/build/contracts/interfaces/IPolicyHolderV2.sol/IPolicyHolderV2.json +142 -0
  23. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +820 -0
  24. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +43 -0
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +477 -0
  26. package/build/contracts/interfaces/IRiskModule.sol/IRiskModule.json +165 -0
  27. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +491 -0
  28. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +502 -0
  29. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +736 -0
  30. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  31. package/build/contracts/mocks/IMintableERC20.sol/IMintableERC20.json +47 -0
  32. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +193 -0
  33. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +457 -0
  34. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +54 -0
  35. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +929 -0
  36. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  37. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +1316 -0
  38. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  39. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  40. package/js/deploy.js +6 -25
  41. package/package.json +3 -5
@@ -0,0 +1,1775 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PolicyPool",
4
+ "sourceName": "contracts/PolicyPool.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IAccessManager",
10
+ "name": "access_",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "contract IERC20Metadata",
15
+ "name": "currency_",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "ComponentAlreadyInThePool",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "enum PolicyPool.ComponentKind",
31
+ "name": "kind",
32
+ "type": "uint8"
33
+ },
34
+ {
35
+ "internalType": "uint256",
36
+ "name": "amount",
37
+ "type": "uint256"
38
+ }
39
+ ],
40
+ "name": "ComponentInUseCannotRemove",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "ComponentMustBeActiveOrDeprecated",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "ComponentNotDeprecated",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "ComponentNotFound",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "ComponentNotFoundOrNotActive",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [],
65
+ "name": "ComponentNotLinkedToThisPool",
66
+ "type": "error"
67
+ },
68
+ {
69
+ "inputs": [
70
+ {
71
+ "internalType": "contract IPolicyPoolComponent",
72
+ "name": "component",
73
+ "type": "address"
74
+ },
75
+ {
76
+ "internalType": "enum PolicyPool.ComponentKind",
77
+ "name": "expectedKind",
78
+ "type": "uint8"
79
+ }
80
+ ],
81
+ "name": "ComponentNotTheRightKind",
82
+ "type": "error"
83
+ },
84
+ {
85
+ "inputs": [
86
+ {
87
+ "internalType": "bytes4",
88
+ "name": "response",
89
+ "type": "bytes4"
90
+ }
91
+ ],
92
+ "name": "InvalidNotificationResponse",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [],
97
+ "name": "NoEmptyName",
98
+ "type": "error"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "NoEmptySymbol",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [],
107
+ "name": "NoZeroAccess",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "NoZeroCurrency",
113
+ "type": "error"
114
+ },
115
+ {
116
+ "inputs": [],
117
+ "name": "NoZeroTreasury",
118
+ "type": "error"
119
+ },
120
+ {
121
+ "inputs": [],
122
+ "name": "OnlyRiskModuleAllowed",
123
+ "type": "error"
124
+ },
125
+ {
126
+ "inputs": [],
127
+ "name": "UpgradeCannotChangeAccess",
128
+ "type": "error"
129
+ },
130
+ {
131
+ "inputs": [],
132
+ "name": "UpgradeCannotChangeCurrency",
133
+ "type": "error"
134
+ },
135
+ {
136
+ "anonymous": false,
137
+ "inputs": [
138
+ {
139
+ "indexed": false,
140
+ "internalType": "address",
141
+ "name": "previousAdmin",
142
+ "type": "address"
143
+ },
144
+ {
145
+ "indexed": false,
146
+ "internalType": "address",
147
+ "name": "newAdmin",
148
+ "type": "address"
149
+ }
150
+ ],
151
+ "name": "AdminChanged",
152
+ "type": "event"
153
+ },
154
+ {
155
+ "anonymous": false,
156
+ "inputs": [
157
+ {
158
+ "indexed": true,
159
+ "internalType": "address",
160
+ "name": "owner",
161
+ "type": "address"
162
+ },
163
+ {
164
+ "indexed": true,
165
+ "internalType": "address",
166
+ "name": "approved",
167
+ "type": "address"
168
+ },
169
+ {
170
+ "indexed": true,
171
+ "internalType": "uint256",
172
+ "name": "tokenId",
173
+ "type": "uint256"
174
+ }
175
+ ],
176
+ "name": "Approval",
177
+ "type": "event"
178
+ },
179
+ {
180
+ "anonymous": false,
181
+ "inputs": [
182
+ {
183
+ "indexed": true,
184
+ "internalType": "address",
185
+ "name": "owner",
186
+ "type": "address"
187
+ },
188
+ {
189
+ "indexed": true,
190
+ "internalType": "address",
191
+ "name": "operator",
192
+ "type": "address"
193
+ },
194
+ {
195
+ "indexed": false,
196
+ "internalType": "bool",
197
+ "name": "approved",
198
+ "type": "bool"
199
+ }
200
+ ],
201
+ "name": "ApprovalForAll",
202
+ "type": "event"
203
+ },
204
+ {
205
+ "anonymous": false,
206
+ "inputs": [
207
+ {
208
+ "indexed": true,
209
+ "internalType": "address",
210
+ "name": "beacon",
211
+ "type": "address"
212
+ }
213
+ ],
214
+ "name": "BeaconUpgraded",
215
+ "type": "event"
216
+ },
217
+ {
218
+ "anonymous": false,
219
+ "inputs": [
220
+ {
221
+ "indexed": true,
222
+ "internalType": "enum IAccessManager.GovernanceActions",
223
+ "name": "action",
224
+ "type": "uint8"
225
+ },
226
+ {
227
+ "indexed": false,
228
+ "internalType": "address",
229
+ "name": "value",
230
+ "type": "address"
231
+ }
232
+ ],
233
+ "name": "ComponentChanged",
234
+ "type": "event"
235
+ },
236
+ {
237
+ "anonymous": false,
238
+ "inputs": [
239
+ {
240
+ "indexed": true,
241
+ "internalType": "contract IPolicyPoolComponent",
242
+ "name": "component",
243
+ "type": "address"
244
+ },
245
+ {
246
+ "indexed": false,
247
+ "internalType": "enum PolicyPool.ComponentKind",
248
+ "name": "kind",
249
+ "type": "uint8"
250
+ },
251
+ {
252
+ "indexed": false,
253
+ "internalType": "enum PolicyPool.ComponentStatus",
254
+ "name": "newStatus",
255
+ "type": "uint8"
256
+ }
257
+ ],
258
+ "name": "ComponentStatusChanged",
259
+ "type": "event"
260
+ },
261
+ {
262
+ "anonymous": false,
263
+ "inputs": [
264
+ {
265
+ "indexed": true,
266
+ "internalType": "uint256",
267
+ "name": "policyId",
268
+ "type": "uint256"
269
+ },
270
+ {
271
+ "indexed": false,
272
+ "internalType": "contract IPolicyHolder",
273
+ "name": "holder",
274
+ "type": "address"
275
+ }
276
+ ],
277
+ "name": "ExpirationNotificationFailed",
278
+ "type": "event"
279
+ },
280
+ {
281
+ "anonymous": false,
282
+ "inputs": [
283
+ {
284
+ "indexed": false,
285
+ "internalType": "uint8",
286
+ "name": "version",
287
+ "type": "uint8"
288
+ }
289
+ ],
290
+ "name": "Initialized",
291
+ "type": "event"
292
+ },
293
+ {
294
+ "anonymous": false,
295
+ "inputs": [
296
+ {
297
+ "indexed": true,
298
+ "internalType": "contract IRiskModule",
299
+ "name": "riskModule",
300
+ "type": "address"
301
+ },
302
+ {
303
+ "components": [
304
+ {
305
+ "internalType": "uint256",
306
+ "name": "id",
307
+ "type": "uint256"
308
+ },
309
+ {
310
+ "internalType": "uint256",
311
+ "name": "payout",
312
+ "type": "uint256"
313
+ },
314
+ {
315
+ "internalType": "uint256",
316
+ "name": "premium",
317
+ "type": "uint256"
318
+ },
319
+ {
320
+ "internalType": "uint256",
321
+ "name": "jrScr",
322
+ "type": "uint256"
323
+ },
324
+ {
325
+ "internalType": "uint256",
326
+ "name": "srScr",
327
+ "type": "uint256"
328
+ },
329
+ {
330
+ "internalType": "uint256",
331
+ "name": "lossProb",
332
+ "type": "uint256"
333
+ },
334
+ {
335
+ "internalType": "uint256",
336
+ "name": "purePremium",
337
+ "type": "uint256"
338
+ },
339
+ {
340
+ "internalType": "uint256",
341
+ "name": "ensuroCommission",
342
+ "type": "uint256"
343
+ },
344
+ {
345
+ "internalType": "uint256",
346
+ "name": "partnerCommission",
347
+ "type": "uint256"
348
+ },
349
+ {
350
+ "internalType": "uint256",
351
+ "name": "jrCoc",
352
+ "type": "uint256"
353
+ },
354
+ {
355
+ "internalType": "uint256",
356
+ "name": "srCoc",
357
+ "type": "uint256"
358
+ },
359
+ {
360
+ "internalType": "contract IRiskModule",
361
+ "name": "riskModule",
362
+ "type": "address"
363
+ },
364
+ {
365
+ "internalType": "uint40",
366
+ "name": "start",
367
+ "type": "uint40"
368
+ },
369
+ {
370
+ "internalType": "uint40",
371
+ "name": "expiration",
372
+ "type": "uint40"
373
+ }
374
+ ],
375
+ "indexed": false,
376
+ "internalType": "struct Policy.PolicyData",
377
+ "name": "policy",
378
+ "type": "tuple"
379
+ }
380
+ ],
381
+ "name": "NewPolicy",
382
+ "type": "event"
383
+ },
384
+ {
385
+ "anonymous": false,
386
+ "inputs": [
387
+ {
388
+ "indexed": false,
389
+ "internalType": "address",
390
+ "name": "account",
391
+ "type": "address"
392
+ }
393
+ ],
394
+ "name": "Paused",
395
+ "type": "event"
396
+ },
397
+ {
398
+ "anonymous": false,
399
+ "inputs": [
400
+ {
401
+ "indexed": true,
402
+ "internalType": "contract IRiskModule",
403
+ "name": "riskModule",
404
+ "type": "address"
405
+ },
406
+ {
407
+ "indexed": true,
408
+ "internalType": "uint256",
409
+ "name": "oldPolicyId",
410
+ "type": "uint256"
411
+ },
412
+ {
413
+ "indexed": true,
414
+ "internalType": "uint256",
415
+ "name": "newPolicyId",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "name": "PolicyReplaced",
420
+ "type": "event"
421
+ },
422
+ {
423
+ "anonymous": false,
424
+ "inputs": [
425
+ {
426
+ "indexed": true,
427
+ "internalType": "contract IRiskModule",
428
+ "name": "riskModule",
429
+ "type": "address"
430
+ },
431
+ {
432
+ "indexed": true,
433
+ "internalType": "uint256",
434
+ "name": "policyId",
435
+ "type": "uint256"
436
+ },
437
+ {
438
+ "indexed": false,
439
+ "internalType": "uint256",
440
+ "name": "payout",
441
+ "type": "uint256"
442
+ }
443
+ ],
444
+ "name": "PolicyResolved",
445
+ "type": "event"
446
+ },
447
+ {
448
+ "anonymous": false,
449
+ "inputs": [
450
+ {
451
+ "indexed": true,
452
+ "internalType": "address",
453
+ "name": "from",
454
+ "type": "address"
455
+ },
456
+ {
457
+ "indexed": true,
458
+ "internalType": "address",
459
+ "name": "to",
460
+ "type": "address"
461
+ },
462
+ {
463
+ "indexed": true,
464
+ "internalType": "uint256",
465
+ "name": "tokenId",
466
+ "type": "uint256"
467
+ }
468
+ ],
469
+ "name": "Transfer",
470
+ "type": "event"
471
+ },
472
+ {
473
+ "anonymous": false,
474
+ "inputs": [
475
+ {
476
+ "indexed": false,
477
+ "internalType": "address",
478
+ "name": "account",
479
+ "type": "address"
480
+ }
481
+ ],
482
+ "name": "Unpaused",
483
+ "type": "event"
484
+ },
485
+ {
486
+ "anonymous": false,
487
+ "inputs": [
488
+ {
489
+ "indexed": true,
490
+ "internalType": "address",
491
+ "name": "implementation",
492
+ "type": "address"
493
+ }
494
+ ],
495
+ "name": "Upgraded",
496
+ "type": "event"
497
+ },
498
+ {
499
+ "inputs": [],
500
+ "name": "GUARDIAN_ROLE",
501
+ "outputs": [
502
+ {
503
+ "internalType": "bytes32",
504
+ "name": "",
505
+ "type": "bytes32"
506
+ }
507
+ ],
508
+ "stateMutability": "view",
509
+ "type": "function"
510
+ },
511
+ {
512
+ "inputs": [],
513
+ "name": "LEVEL1_ROLE",
514
+ "outputs": [
515
+ {
516
+ "internalType": "bytes32",
517
+ "name": "",
518
+ "type": "bytes32"
519
+ }
520
+ ],
521
+ "stateMutability": "view",
522
+ "type": "function"
523
+ },
524
+ {
525
+ "inputs": [],
526
+ "name": "LEVEL2_ROLE",
527
+ "outputs": [
528
+ {
529
+ "internalType": "bytes32",
530
+ "name": "",
531
+ "type": "bytes32"
532
+ }
533
+ ],
534
+ "stateMutability": "view",
535
+ "type": "function"
536
+ },
537
+ {
538
+ "inputs": [],
539
+ "name": "LEVEL3_ROLE",
540
+ "outputs": [
541
+ {
542
+ "internalType": "bytes32",
543
+ "name": "",
544
+ "type": "bytes32"
545
+ }
546
+ ],
547
+ "stateMutability": "view",
548
+ "type": "function"
549
+ },
550
+ {
551
+ "inputs": [],
552
+ "name": "access",
553
+ "outputs": [
554
+ {
555
+ "internalType": "contract IAccessManager",
556
+ "name": "",
557
+ "type": "address"
558
+ }
559
+ ],
560
+ "stateMutability": "view",
561
+ "type": "function"
562
+ },
563
+ {
564
+ "inputs": [
565
+ {
566
+ "internalType": "contract IPolicyPoolComponent",
567
+ "name": "component",
568
+ "type": "address"
569
+ },
570
+ {
571
+ "internalType": "enum PolicyPool.ComponentKind",
572
+ "name": "kind",
573
+ "type": "uint8"
574
+ }
575
+ ],
576
+ "name": "addComponent",
577
+ "outputs": [],
578
+ "stateMutability": "nonpayable",
579
+ "type": "function"
580
+ },
581
+ {
582
+ "inputs": [
583
+ {
584
+ "internalType": "address",
585
+ "name": "to",
586
+ "type": "address"
587
+ },
588
+ {
589
+ "internalType": "uint256",
590
+ "name": "tokenId",
591
+ "type": "uint256"
592
+ }
593
+ ],
594
+ "name": "approve",
595
+ "outputs": [],
596
+ "stateMutability": "nonpayable",
597
+ "type": "function"
598
+ },
599
+ {
600
+ "inputs": [
601
+ {
602
+ "internalType": "address",
603
+ "name": "owner",
604
+ "type": "address"
605
+ }
606
+ ],
607
+ "name": "balanceOf",
608
+ "outputs": [
609
+ {
610
+ "internalType": "uint256",
611
+ "name": "",
612
+ "type": "uint256"
613
+ }
614
+ ],
615
+ "stateMutability": "view",
616
+ "type": "function"
617
+ },
618
+ {
619
+ "inputs": [
620
+ {
621
+ "internalType": "contract IPolicyPoolComponent",
622
+ "name": "component",
623
+ "type": "address"
624
+ },
625
+ {
626
+ "internalType": "enum PolicyPool.ComponentStatus",
627
+ "name": "newStatus",
628
+ "type": "uint8"
629
+ }
630
+ ],
631
+ "name": "changeComponentStatus",
632
+ "outputs": [],
633
+ "stateMutability": "nonpayable",
634
+ "type": "function"
635
+ },
636
+ {
637
+ "inputs": [],
638
+ "name": "currency",
639
+ "outputs": [
640
+ {
641
+ "internalType": "contract IERC20Metadata",
642
+ "name": "",
643
+ "type": "address"
644
+ }
645
+ ],
646
+ "stateMutability": "view",
647
+ "type": "function"
648
+ },
649
+ {
650
+ "inputs": [
651
+ {
652
+ "internalType": "contract IEToken",
653
+ "name": "eToken",
654
+ "type": "address"
655
+ },
656
+ {
657
+ "internalType": "uint256",
658
+ "name": "amount",
659
+ "type": "uint256"
660
+ }
661
+ ],
662
+ "name": "deposit",
663
+ "outputs": [],
664
+ "stateMutability": "nonpayable",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "inputs": [
669
+ {
670
+ "components": [
671
+ {
672
+ "internalType": "uint256",
673
+ "name": "id",
674
+ "type": "uint256"
675
+ },
676
+ {
677
+ "internalType": "uint256",
678
+ "name": "payout",
679
+ "type": "uint256"
680
+ },
681
+ {
682
+ "internalType": "uint256",
683
+ "name": "premium",
684
+ "type": "uint256"
685
+ },
686
+ {
687
+ "internalType": "uint256",
688
+ "name": "jrScr",
689
+ "type": "uint256"
690
+ },
691
+ {
692
+ "internalType": "uint256",
693
+ "name": "srScr",
694
+ "type": "uint256"
695
+ },
696
+ {
697
+ "internalType": "uint256",
698
+ "name": "lossProb",
699
+ "type": "uint256"
700
+ },
701
+ {
702
+ "internalType": "uint256",
703
+ "name": "purePremium",
704
+ "type": "uint256"
705
+ },
706
+ {
707
+ "internalType": "uint256",
708
+ "name": "ensuroCommission",
709
+ "type": "uint256"
710
+ },
711
+ {
712
+ "internalType": "uint256",
713
+ "name": "partnerCommission",
714
+ "type": "uint256"
715
+ },
716
+ {
717
+ "internalType": "uint256",
718
+ "name": "jrCoc",
719
+ "type": "uint256"
720
+ },
721
+ {
722
+ "internalType": "uint256",
723
+ "name": "srCoc",
724
+ "type": "uint256"
725
+ },
726
+ {
727
+ "internalType": "contract IRiskModule",
728
+ "name": "riskModule",
729
+ "type": "address"
730
+ },
731
+ {
732
+ "internalType": "uint40",
733
+ "name": "start",
734
+ "type": "uint40"
735
+ },
736
+ {
737
+ "internalType": "uint40",
738
+ "name": "expiration",
739
+ "type": "uint40"
740
+ }
741
+ ],
742
+ "internalType": "struct Policy.PolicyData[]",
743
+ "name": "policies",
744
+ "type": "tuple[]"
745
+ }
746
+ ],
747
+ "name": "expirePolicies",
748
+ "outputs": [],
749
+ "stateMutability": "nonpayable",
750
+ "type": "function"
751
+ },
752
+ {
753
+ "inputs": [
754
+ {
755
+ "components": [
756
+ {
757
+ "internalType": "uint256",
758
+ "name": "id",
759
+ "type": "uint256"
760
+ },
761
+ {
762
+ "internalType": "uint256",
763
+ "name": "payout",
764
+ "type": "uint256"
765
+ },
766
+ {
767
+ "internalType": "uint256",
768
+ "name": "premium",
769
+ "type": "uint256"
770
+ },
771
+ {
772
+ "internalType": "uint256",
773
+ "name": "jrScr",
774
+ "type": "uint256"
775
+ },
776
+ {
777
+ "internalType": "uint256",
778
+ "name": "srScr",
779
+ "type": "uint256"
780
+ },
781
+ {
782
+ "internalType": "uint256",
783
+ "name": "lossProb",
784
+ "type": "uint256"
785
+ },
786
+ {
787
+ "internalType": "uint256",
788
+ "name": "purePremium",
789
+ "type": "uint256"
790
+ },
791
+ {
792
+ "internalType": "uint256",
793
+ "name": "ensuroCommission",
794
+ "type": "uint256"
795
+ },
796
+ {
797
+ "internalType": "uint256",
798
+ "name": "partnerCommission",
799
+ "type": "uint256"
800
+ },
801
+ {
802
+ "internalType": "uint256",
803
+ "name": "jrCoc",
804
+ "type": "uint256"
805
+ },
806
+ {
807
+ "internalType": "uint256",
808
+ "name": "srCoc",
809
+ "type": "uint256"
810
+ },
811
+ {
812
+ "internalType": "contract IRiskModule",
813
+ "name": "riskModule",
814
+ "type": "address"
815
+ },
816
+ {
817
+ "internalType": "uint40",
818
+ "name": "start",
819
+ "type": "uint40"
820
+ },
821
+ {
822
+ "internalType": "uint40",
823
+ "name": "expiration",
824
+ "type": "uint40"
825
+ }
826
+ ],
827
+ "internalType": "struct Policy.PolicyData",
828
+ "name": "policy",
829
+ "type": "tuple"
830
+ }
831
+ ],
832
+ "name": "expirePolicy",
833
+ "outputs": [],
834
+ "stateMutability": "nonpayable",
835
+ "type": "function"
836
+ },
837
+ {
838
+ "inputs": [
839
+ {
840
+ "internalType": "uint256",
841
+ "name": "tokenId",
842
+ "type": "uint256"
843
+ }
844
+ ],
845
+ "name": "getApproved",
846
+ "outputs": [
847
+ {
848
+ "internalType": "address",
849
+ "name": "",
850
+ "type": "address"
851
+ }
852
+ ],
853
+ "stateMutability": "view",
854
+ "type": "function"
855
+ },
856
+ {
857
+ "inputs": [
858
+ {
859
+ "internalType": "contract IPolicyPoolComponent",
860
+ "name": "component",
861
+ "type": "address"
862
+ }
863
+ ],
864
+ "name": "getComponentStatus",
865
+ "outputs": [
866
+ {
867
+ "internalType": "enum PolicyPool.ComponentStatus",
868
+ "name": "",
869
+ "type": "uint8"
870
+ }
871
+ ],
872
+ "stateMutability": "view",
873
+ "type": "function"
874
+ },
875
+ {
876
+ "inputs": [
877
+ {
878
+ "internalType": "uint256",
879
+ "name": "policyId",
880
+ "type": "uint256"
881
+ }
882
+ ],
883
+ "name": "getPolicyHash",
884
+ "outputs": [
885
+ {
886
+ "internalType": "bytes32",
887
+ "name": "",
888
+ "type": "bytes32"
889
+ }
890
+ ],
891
+ "stateMutability": "view",
892
+ "type": "function"
893
+ },
894
+ {
895
+ "inputs": [
896
+ {
897
+ "internalType": "string",
898
+ "name": "name_",
899
+ "type": "string"
900
+ },
901
+ {
902
+ "internalType": "string",
903
+ "name": "symbol_",
904
+ "type": "string"
905
+ },
906
+ {
907
+ "internalType": "address",
908
+ "name": "treasury_",
909
+ "type": "address"
910
+ }
911
+ ],
912
+ "name": "initialize",
913
+ "outputs": [],
914
+ "stateMutability": "nonpayable",
915
+ "type": "function"
916
+ },
917
+ {
918
+ "inputs": [
919
+ {
920
+ "internalType": "uint256",
921
+ "name": "policyId",
922
+ "type": "uint256"
923
+ }
924
+ ],
925
+ "name": "isActive",
926
+ "outputs": [
927
+ {
928
+ "internalType": "bool",
929
+ "name": "",
930
+ "type": "bool"
931
+ }
932
+ ],
933
+ "stateMutability": "view",
934
+ "type": "function"
935
+ },
936
+ {
937
+ "inputs": [
938
+ {
939
+ "internalType": "address",
940
+ "name": "owner",
941
+ "type": "address"
942
+ },
943
+ {
944
+ "internalType": "address",
945
+ "name": "operator",
946
+ "type": "address"
947
+ }
948
+ ],
949
+ "name": "isApprovedForAll",
950
+ "outputs": [
951
+ {
952
+ "internalType": "bool",
953
+ "name": "",
954
+ "type": "bool"
955
+ }
956
+ ],
957
+ "stateMutability": "view",
958
+ "type": "function"
959
+ },
960
+ {
961
+ "inputs": [
962
+ {
963
+ "internalType": "contract IRiskModule",
964
+ "name": "rm",
965
+ "type": "address"
966
+ },
967
+ {
968
+ "internalType": "uint96",
969
+ "name": "internalId",
970
+ "type": "uint96"
971
+ }
972
+ ],
973
+ "name": "makePolicyId",
974
+ "outputs": [
975
+ {
976
+ "internalType": "uint256",
977
+ "name": "",
978
+ "type": "uint256"
979
+ }
980
+ ],
981
+ "stateMutability": "pure",
982
+ "type": "function"
983
+ },
984
+ {
985
+ "inputs": [],
986
+ "name": "name",
987
+ "outputs": [
988
+ {
989
+ "internalType": "string",
990
+ "name": "",
991
+ "type": "string"
992
+ }
993
+ ],
994
+ "stateMutability": "view",
995
+ "type": "function"
996
+ },
997
+ {
998
+ "inputs": [
999
+ {
1000
+ "components": [
1001
+ {
1002
+ "internalType": "uint256",
1003
+ "name": "id",
1004
+ "type": "uint256"
1005
+ },
1006
+ {
1007
+ "internalType": "uint256",
1008
+ "name": "payout",
1009
+ "type": "uint256"
1010
+ },
1011
+ {
1012
+ "internalType": "uint256",
1013
+ "name": "premium",
1014
+ "type": "uint256"
1015
+ },
1016
+ {
1017
+ "internalType": "uint256",
1018
+ "name": "jrScr",
1019
+ "type": "uint256"
1020
+ },
1021
+ {
1022
+ "internalType": "uint256",
1023
+ "name": "srScr",
1024
+ "type": "uint256"
1025
+ },
1026
+ {
1027
+ "internalType": "uint256",
1028
+ "name": "lossProb",
1029
+ "type": "uint256"
1030
+ },
1031
+ {
1032
+ "internalType": "uint256",
1033
+ "name": "purePremium",
1034
+ "type": "uint256"
1035
+ },
1036
+ {
1037
+ "internalType": "uint256",
1038
+ "name": "ensuroCommission",
1039
+ "type": "uint256"
1040
+ },
1041
+ {
1042
+ "internalType": "uint256",
1043
+ "name": "partnerCommission",
1044
+ "type": "uint256"
1045
+ },
1046
+ {
1047
+ "internalType": "uint256",
1048
+ "name": "jrCoc",
1049
+ "type": "uint256"
1050
+ },
1051
+ {
1052
+ "internalType": "uint256",
1053
+ "name": "srCoc",
1054
+ "type": "uint256"
1055
+ },
1056
+ {
1057
+ "internalType": "contract IRiskModule",
1058
+ "name": "riskModule",
1059
+ "type": "address"
1060
+ },
1061
+ {
1062
+ "internalType": "uint40",
1063
+ "name": "start",
1064
+ "type": "uint40"
1065
+ },
1066
+ {
1067
+ "internalType": "uint40",
1068
+ "name": "expiration",
1069
+ "type": "uint40"
1070
+ }
1071
+ ],
1072
+ "internalType": "struct Policy.PolicyData",
1073
+ "name": "policy",
1074
+ "type": "tuple"
1075
+ },
1076
+ {
1077
+ "internalType": "address",
1078
+ "name": "payer",
1079
+ "type": "address"
1080
+ },
1081
+ {
1082
+ "internalType": "address",
1083
+ "name": "policyHolder",
1084
+ "type": "address"
1085
+ },
1086
+ {
1087
+ "internalType": "uint96",
1088
+ "name": "internalId",
1089
+ "type": "uint96"
1090
+ }
1091
+ ],
1092
+ "name": "newPolicy",
1093
+ "outputs": [
1094
+ {
1095
+ "internalType": "uint256",
1096
+ "name": "",
1097
+ "type": "uint256"
1098
+ }
1099
+ ],
1100
+ "stateMutability": "nonpayable",
1101
+ "type": "function"
1102
+ },
1103
+ {
1104
+ "inputs": [
1105
+ {
1106
+ "internalType": "uint256",
1107
+ "name": "tokenId",
1108
+ "type": "uint256"
1109
+ }
1110
+ ],
1111
+ "name": "ownerOf",
1112
+ "outputs": [
1113
+ {
1114
+ "internalType": "address",
1115
+ "name": "",
1116
+ "type": "address"
1117
+ }
1118
+ ],
1119
+ "stateMutability": "view",
1120
+ "type": "function"
1121
+ },
1122
+ {
1123
+ "inputs": [],
1124
+ "name": "pause",
1125
+ "outputs": [],
1126
+ "stateMutability": "nonpayable",
1127
+ "type": "function"
1128
+ },
1129
+ {
1130
+ "inputs": [],
1131
+ "name": "paused",
1132
+ "outputs": [
1133
+ {
1134
+ "internalType": "bool",
1135
+ "name": "",
1136
+ "type": "bool"
1137
+ }
1138
+ ],
1139
+ "stateMutability": "view",
1140
+ "type": "function"
1141
+ },
1142
+ {
1143
+ "inputs": [],
1144
+ "name": "proxiableUUID",
1145
+ "outputs": [
1146
+ {
1147
+ "internalType": "bytes32",
1148
+ "name": "",
1149
+ "type": "bytes32"
1150
+ }
1151
+ ],
1152
+ "stateMutability": "view",
1153
+ "type": "function"
1154
+ },
1155
+ {
1156
+ "inputs": [
1157
+ {
1158
+ "internalType": "contract IPolicyPoolComponent",
1159
+ "name": "component",
1160
+ "type": "address"
1161
+ }
1162
+ ],
1163
+ "name": "removeComponent",
1164
+ "outputs": [],
1165
+ "stateMutability": "nonpayable",
1166
+ "type": "function"
1167
+ },
1168
+ {
1169
+ "inputs": [
1170
+ {
1171
+ "components": [
1172
+ {
1173
+ "internalType": "uint256",
1174
+ "name": "id",
1175
+ "type": "uint256"
1176
+ },
1177
+ {
1178
+ "internalType": "uint256",
1179
+ "name": "payout",
1180
+ "type": "uint256"
1181
+ },
1182
+ {
1183
+ "internalType": "uint256",
1184
+ "name": "premium",
1185
+ "type": "uint256"
1186
+ },
1187
+ {
1188
+ "internalType": "uint256",
1189
+ "name": "jrScr",
1190
+ "type": "uint256"
1191
+ },
1192
+ {
1193
+ "internalType": "uint256",
1194
+ "name": "srScr",
1195
+ "type": "uint256"
1196
+ },
1197
+ {
1198
+ "internalType": "uint256",
1199
+ "name": "lossProb",
1200
+ "type": "uint256"
1201
+ },
1202
+ {
1203
+ "internalType": "uint256",
1204
+ "name": "purePremium",
1205
+ "type": "uint256"
1206
+ },
1207
+ {
1208
+ "internalType": "uint256",
1209
+ "name": "ensuroCommission",
1210
+ "type": "uint256"
1211
+ },
1212
+ {
1213
+ "internalType": "uint256",
1214
+ "name": "partnerCommission",
1215
+ "type": "uint256"
1216
+ },
1217
+ {
1218
+ "internalType": "uint256",
1219
+ "name": "jrCoc",
1220
+ "type": "uint256"
1221
+ },
1222
+ {
1223
+ "internalType": "uint256",
1224
+ "name": "srCoc",
1225
+ "type": "uint256"
1226
+ },
1227
+ {
1228
+ "internalType": "contract IRiskModule",
1229
+ "name": "riskModule",
1230
+ "type": "address"
1231
+ },
1232
+ {
1233
+ "internalType": "uint40",
1234
+ "name": "start",
1235
+ "type": "uint40"
1236
+ },
1237
+ {
1238
+ "internalType": "uint40",
1239
+ "name": "expiration",
1240
+ "type": "uint40"
1241
+ }
1242
+ ],
1243
+ "internalType": "struct Policy.PolicyData",
1244
+ "name": "oldPolicy",
1245
+ "type": "tuple"
1246
+ },
1247
+ {
1248
+ "components": [
1249
+ {
1250
+ "internalType": "uint256",
1251
+ "name": "id",
1252
+ "type": "uint256"
1253
+ },
1254
+ {
1255
+ "internalType": "uint256",
1256
+ "name": "payout",
1257
+ "type": "uint256"
1258
+ },
1259
+ {
1260
+ "internalType": "uint256",
1261
+ "name": "premium",
1262
+ "type": "uint256"
1263
+ },
1264
+ {
1265
+ "internalType": "uint256",
1266
+ "name": "jrScr",
1267
+ "type": "uint256"
1268
+ },
1269
+ {
1270
+ "internalType": "uint256",
1271
+ "name": "srScr",
1272
+ "type": "uint256"
1273
+ },
1274
+ {
1275
+ "internalType": "uint256",
1276
+ "name": "lossProb",
1277
+ "type": "uint256"
1278
+ },
1279
+ {
1280
+ "internalType": "uint256",
1281
+ "name": "purePremium",
1282
+ "type": "uint256"
1283
+ },
1284
+ {
1285
+ "internalType": "uint256",
1286
+ "name": "ensuroCommission",
1287
+ "type": "uint256"
1288
+ },
1289
+ {
1290
+ "internalType": "uint256",
1291
+ "name": "partnerCommission",
1292
+ "type": "uint256"
1293
+ },
1294
+ {
1295
+ "internalType": "uint256",
1296
+ "name": "jrCoc",
1297
+ "type": "uint256"
1298
+ },
1299
+ {
1300
+ "internalType": "uint256",
1301
+ "name": "srCoc",
1302
+ "type": "uint256"
1303
+ },
1304
+ {
1305
+ "internalType": "contract IRiskModule",
1306
+ "name": "riskModule",
1307
+ "type": "address"
1308
+ },
1309
+ {
1310
+ "internalType": "uint40",
1311
+ "name": "start",
1312
+ "type": "uint40"
1313
+ },
1314
+ {
1315
+ "internalType": "uint40",
1316
+ "name": "expiration",
1317
+ "type": "uint40"
1318
+ }
1319
+ ],
1320
+ "internalType": "struct Policy.PolicyData",
1321
+ "name": "newPolicy_",
1322
+ "type": "tuple"
1323
+ },
1324
+ {
1325
+ "internalType": "address",
1326
+ "name": "payer",
1327
+ "type": "address"
1328
+ },
1329
+ {
1330
+ "internalType": "uint96",
1331
+ "name": "internalId",
1332
+ "type": "uint96"
1333
+ }
1334
+ ],
1335
+ "name": "replacePolicy",
1336
+ "outputs": [
1337
+ {
1338
+ "internalType": "uint256",
1339
+ "name": "",
1340
+ "type": "uint256"
1341
+ }
1342
+ ],
1343
+ "stateMutability": "nonpayable",
1344
+ "type": "function"
1345
+ },
1346
+ {
1347
+ "inputs": [
1348
+ {
1349
+ "components": [
1350
+ {
1351
+ "internalType": "uint256",
1352
+ "name": "id",
1353
+ "type": "uint256"
1354
+ },
1355
+ {
1356
+ "internalType": "uint256",
1357
+ "name": "payout",
1358
+ "type": "uint256"
1359
+ },
1360
+ {
1361
+ "internalType": "uint256",
1362
+ "name": "premium",
1363
+ "type": "uint256"
1364
+ },
1365
+ {
1366
+ "internalType": "uint256",
1367
+ "name": "jrScr",
1368
+ "type": "uint256"
1369
+ },
1370
+ {
1371
+ "internalType": "uint256",
1372
+ "name": "srScr",
1373
+ "type": "uint256"
1374
+ },
1375
+ {
1376
+ "internalType": "uint256",
1377
+ "name": "lossProb",
1378
+ "type": "uint256"
1379
+ },
1380
+ {
1381
+ "internalType": "uint256",
1382
+ "name": "purePremium",
1383
+ "type": "uint256"
1384
+ },
1385
+ {
1386
+ "internalType": "uint256",
1387
+ "name": "ensuroCommission",
1388
+ "type": "uint256"
1389
+ },
1390
+ {
1391
+ "internalType": "uint256",
1392
+ "name": "partnerCommission",
1393
+ "type": "uint256"
1394
+ },
1395
+ {
1396
+ "internalType": "uint256",
1397
+ "name": "jrCoc",
1398
+ "type": "uint256"
1399
+ },
1400
+ {
1401
+ "internalType": "uint256",
1402
+ "name": "srCoc",
1403
+ "type": "uint256"
1404
+ },
1405
+ {
1406
+ "internalType": "contract IRiskModule",
1407
+ "name": "riskModule",
1408
+ "type": "address"
1409
+ },
1410
+ {
1411
+ "internalType": "uint40",
1412
+ "name": "start",
1413
+ "type": "uint40"
1414
+ },
1415
+ {
1416
+ "internalType": "uint40",
1417
+ "name": "expiration",
1418
+ "type": "uint40"
1419
+ }
1420
+ ],
1421
+ "internalType": "struct Policy.PolicyData",
1422
+ "name": "policy",
1423
+ "type": "tuple"
1424
+ },
1425
+ {
1426
+ "internalType": "uint256",
1427
+ "name": "payout",
1428
+ "type": "uint256"
1429
+ }
1430
+ ],
1431
+ "name": "resolvePolicy",
1432
+ "outputs": [],
1433
+ "stateMutability": "nonpayable",
1434
+ "type": "function"
1435
+ },
1436
+ {
1437
+ "inputs": [
1438
+ {
1439
+ "components": [
1440
+ {
1441
+ "internalType": "uint256",
1442
+ "name": "id",
1443
+ "type": "uint256"
1444
+ },
1445
+ {
1446
+ "internalType": "uint256",
1447
+ "name": "payout",
1448
+ "type": "uint256"
1449
+ },
1450
+ {
1451
+ "internalType": "uint256",
1452
+ "name": "premium",
1453
+ "type": "uint256"
1454
+ },
1455
+ {
1456
+ "internalType": "uint256",
1457
+ "name": "jrScr",
1458
+ "type": "uint256"
1459
+ },
1460
+ {
1461
+ "internalType": "uint256",
1462
+ "name": "srScr",
1463
+ "type": "uint256"
1464
+ },
1465
+ {
1466
+ "internalType": "uint256",
1467
+ "name": "lossProb",
1468
+ "type": "uint256"
1469
+ },
1470
+ {
1471
+ "internalType": "uint256",
1472
+ "name": "purePremium",
1473
+ "type": "uint256"
1474
+ },
1475
+ {
1476
+ "internalType": "uint256",
1477
+ "name": "ensuroCommission",
1478
+ "type": "uint256"
1479
+ },
1480
+ {
1481
+ "internalType": "uint256",
1482
+ "name": "partnerCommission",
1483
+ "type": "uint256"
1484
+ },
1485
+ {
1486
+ "internalType": "uint256",
1487
+ "name": "jrCoc",
1488
+ "type": "uint256"
1489
+ },
1490
+ {
1491
+ "internalType": "uint256",
1492
+ "name": "srCoc",
1493
+ "type": "uint256"
1494
+ },
1495
+ {
1496
+ "internalType": "contract IRiskModule",
1497
+ "name": "riskModule",
1498
+ "type": "address"
1499
+ },
1500
+ {
1501
+ "internalType": "uint40",
1502
+ "name": "start",
1503
+ "type": "uint40"
1504
+ },
1505
+ {
1506
+ "internalType": "uint40",
1507
+ "name": "expiration",
1508
+ "type": "uint40"
1509
+ }
1510
+ ],
1511
+ "internalType": "struct Policy.PolicyData",
1512
+ "name": "policy",
1513
+ "type": "tuple"
1514
+ },
1515
+ {
1516
+ "internalType": "bool",
1517
+ "name": "customerWon",
1518
+ "type": "bool"
1519
+ }
1520
+ ],
1521
+ "name": "resolvePolicyFullPayout",
1522
+ "outputs": [],
1523
+ "stateMutability": "nonpayable",
1524
+ "type": "function"
1525
+ },
1526
+ {
1527
+ "inputs": [
1528
+ {
1529
+ "internalType": "address",
1530
+ "name": "from",
1531
+ "type": "address"
1532
+ },
1533
+ {
1534
+ "internalType": "address",
1535
+ "name": "to",
1536
+ "type": "address"
1537
+ },
1538
+ {
1539
+ "internalType": "uint256",
1540
+ "name": "tokenId",
1541
+ "type": "uint256"
1542
+ }
1543
+ ],
1544
+ "name": "safeTransferFrom",
1545
+ "outputs": [],
1546
+ "stateMutability": "nonpayable",
1547
+ "type": "function"
1548
+ },
1549
+ {
1550
+ "inputs": [
1551
+ {
1552
+ "internalType": "address",
1553
+ "name": "from",
1554
+ "type": "address"
1555
+ },
1556
+ {
1557
+ "internalType": "address",
1558
+ "name": "to",
1559
+ "type": "address"
1560
+ },
1561
+ {
1562
+ "internalType": "uint256",
1563
+ "name": "tokenId",
1564
+ "type": "uint256"
1565
+ },
1566
+ {
1567
+ "internalType": "bytes",
1568
+ "name": "data",
1569
+ "type": "bytes"
1570
+ }
1571
+ ],
1572
+ "name": "safeTransferFrom",
1573
+ "outputs": [],
1574
+ "stateMutability": "nonpayable",
1575
+ "type": "function"
1576
+ },
1577
+ {
1578
+ "inputs": [
1579
+ {
1580
+ "internalType": "address",
1581
+ "name": "operator",
1582
+ "type": "address"
1583
+ },
1584
+ {
1585
+ "internalType": "bool",
1586
+ "name": "approved",
1587
+ "type": "bool"
1588
+ }
1589
+ ],
1590
+ "name": "setApprovalForAll",
1591
+ "outputs": [],
1592
+ "stateMutability": "nonpayable",
1593
+ "type": "function"
1594
+ },
1595
+ {
1596
+ "inputs": [
1597
+ {
1598
+ "internalType": "string",
1599
+ "name": "nftBaseURI_",
1600
+ "type": "string"
1601
+ }
1602
+ ],
1603
+ "name": "setBaseURI",
1604
+ "outputs": [],
1605
+ "stateMutability": "nonpayable",
1606
+ "type": "function"
1607
+ },
1608
+ {
1609
+ "inputs": [
1610
+ {
1611
+ "internalType": "address",
1612
+ "name": "treasury_",
1613
+ "type": "address"
1614
+ }
1615
+ ],
1616
+ "name": "setTreasury",
1617
+ "outputs": [],
1618
+ "stateMutability": "nonpayable",
1619
+ "type": "function"
1620
+ },
1621
+ {
1622
+ "inputs": [
1623
+ {
1624
+ "internalType": "bytes4",
1625
+ "name": "interfaceId",
1626
+ "type": "bytes4"
1627
+ }
1628
+ ],
1629
+ "name": "supportsInterface",
1630
+ "outputs": [
1631
+ {
1632
+ "internalType": "bool",
1633
+ "name": "",
1634
+ "type": "bool"
1635
+ }
1636
+ ],
1637
+ "stateMutability": "view",
1638
+ "type": "function"
1639
+ },
1640
+ {
1641
+ "inputs": [],
1642
+ "name": "symbol",
1643
+ "outputs": [
1644
+ {
1645
+ "internalType": "string",
1646
+ "name": "",
1647
+ "type": "string"
1648
+ }
1649
+ ],
1650
+ "stateMutability": "view",
1651
+ "type": "function"
1652
+ },
1653
+ {
1654
+ "inputs": [
1655
+ {
1656
+ "internalType": "uint256",
1657
+ "name": "tokenId",
1658
+ "type": "uint256"
1659
+ }
1660
+ ],
1661
+ "name": "tokenURI",
1662
+ "outputs": [
1663
+ {
1664
+ "internalType": "string",
1665
+ "name": "",
1666
+ "type": "string"
1667
+ }
1668
+ ],
1669
+ "stateMutability": "view",
1670
+ "type": "function"
1671
+ },
1672
+ {
1673
+ "inputs": [
1674
+ {
1675
+ "internalType": "address",
1676
+ "name": "from",
1677
+ "type": "address"
1678
+ },
1679
+ {
1680
+ "internalType": "address",
1681
+ "name": "to",
1682
+ "type": "address"
1683
+ },
1684
+ {
1685
+ "internalType": "uint256",
1686
+ "name": "tokenId",
1687
+ "type": "uint256"
1688
+ }
1689
+ ],
1690
+ "name": "transferFrom",
1691
+ "outputs": [],
1692
+ "stateMutability": "nonpayable",
1693
+ "type": "function"
1694
+ },
1695
+ {
1696
+ "inputs": [],
1697
+ "name": "treasury",
1698
+ "outputs": [
1699
+ {
1700
+ "internalType": "address",
1701
+ "name": "",
1702
+ "type": "address"
1703
+ }
1704
+ ],
1705
+ "stateMutability": "view",
1706
+ "type": "function"
1707
+ },
1708
+ {
1709
+ "inputs": [],
1710
+ "name": "unpause",
1711
+ "outputs": [],
1712
+ "stateMutability": "nonpayable",
1713
+ "type": "function"
1714
+ },
1715
+ {
1716
+ "inputs": [
1717
+ {
1718
+ "internalType": "address",
1719
+ "name": "newImplementation",
1720
+ "type": "address"
1721
+ }
1722
+ ],
1723
+ "name": "upgradeTo",
1724
+ "outputs": [],
1725
+ "stateMutability": "nonpayable",
1726
+ "type": "function"
1727
+ },
1728
+ {
1729
+ "inputs": [
1730
+ {
1731
+ "internalType": "address",
1732
+ "name": "newImplementation",
1733
+ "type": "address"
1734
+ },
1735
+ {
1736
+ "internalType": "bytes",
1737
+ "name": "data",
1738
+ "type": "bytes"
1739
+ }
1740
+ ],
1741
+ "name": "upgradeToAndCall",
1742
+ "outputs": [],
1743
+ "stateMutability": "payable",
1744
+ "type": "function"
1745
+ },
1746
+ {
1747
+ "inputs": [
1748
+ {
1749
+ "internalType": "contract IEToken",
1750
+ "name": "eToken",
1751
+ "type": "address"
1752
+ },
1753
+ {
1754
+ "internalType": "uint256",
1755
+ "name": "amount",
1756
+ "type": "uint256"
1757
+ }
1758
+ ],
1759
+ "name": "withdraw",
1760
+ "outputs": [
1761
+ {
1762
+ "internalType": "uint256",
1763
+ "name": "",
1764
+ "type": "uint256"
1765
+ }
1766
+ ],
1767
+ "stateMutability": "nonpayable",
1768
+ "type": "function"
1769
+ }
1770
+ ],
1771
+ "bytecode": "0x60e0604052306080523480156200001557600080fd5b5060405162005f5c38038062005f5c833981016040819052620000389162000184565b6001600160a01b038216620000605760405163a9f283c960e01b815260040160405180910390fd5b6001600160a01b038116620000885760405163559a03cd60e01b815260040160405180910390fd5b62000092620000aa565b6001600160a01b0391821660a0521660c052620001c3565b600054610100900460ff1615620001175760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000169576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200018157600080fd5b50565b600080604083850312156200019857600080fd5b8251620001a5816200016b565b6020840151909250620001b8816200016b565b809150509250929050565b60805160a05160c051615cac620002b0600039600081816107ba015281816111570152818161120d015281816112c301528181611579015281816115ed0152818161164e01528181611ebe01528181611f69015281816120120152818161205101528181612182015261379501526000818161063f01528181611490015281816118de015281816119d601528181611af101528181611b92015281816122940152818161283401528181612eb30152818161310a0152818161364e01526136e2015260008181610c5601528181610c960152818161173e0152818161177e015261180d0152615cac6000f3fe6080604052600436106102675760003560e01c80636769a76f1161014457806395d89b41116100b6578063e5a6b10f1161007a578063e5a6b10f146107ab578063e985e9c5146107de578063f0f4426014610828578063f3fef3a314610848578063f67b2bad14610868578063ffa600e31461088a57600080fd5b806395d89b4114610716578063a22cb4651461072b578063b88d4fde1461074b578063c016f88a1461076b578063c87b56dd1461078b57600080fd5b806371907f171161010857806371907f1714610630578063792da09e146106635780637a702b3c1461069157806382afd23b146106b15780638456cb59146106e15780638c916d46146106f657600080fd5b80636769a76f146105905780636af6f1ef146105b05780636b8734e7146105d05780636f86c897146105f057806370a082311461061057600080fd5b806342842e0e116101dd57806355f804b3116101a157806355f804b3146104c55780635b494dd5146104e55780635c975abb146105195780635fcbf4451461053157806361d027b3146105515780636352211e1461057057600080fd5b806342842e0e1461042957806347e7ef24146104495780634a47a3e0146104695780634f1ef2861461049d57806352d1902d146104b057600080fd5b806323b872dd1161022f57806323b872dd1461033d57806324ea54f41461035d57806333d6157a1461038d5780633659cfe6146103d45780633ed7c1ae146103f45780633f4ba83a1461041457600080fd5b806301ffc9a71461026c57806306fdde03146102a1578063077f224a146102c3578063081812fc146102e5578063095ea7b31461031d575b600080fd5b34801561027857600080fd5b5061028c610287366004614e8e565b6108aa565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102b66108d6565b6040516102989190614efb565b3480156102cf57600080fd5b506102e36102de366004614ff0565b610968565b005b3480156102f157600080fd5b50610305610300366004615068565b610adf565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b506102e3610338366004615081565b610b06565b34801561034957600080fd5b506102e36103583660046150ad565b610c1b565b34801561036957600080fd5b5061037f600080516020615c5783398151915281565b604051908152602001610298565b34801561039957600080fd5b506103c76103a83660046150ee565b6001600160a01b0316600090815261012e602052604090205460ff1690565b604051610298919061513f565b3480156103e057600080fd5b506102e36103ef3660046150ee565b610c4c565b34801561040057600080fd5b5061037f61040f366004615255565b610d2b565b34801561042057600080fd5b506102e3611468565b34801561043557600080fd5b506102e36104443660046150ad565b611529565b34801561045557600080fd5b506102e3610464366004615081565b611544565b34801561047557600080fd5b5061037f7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102e36104ab3660046152b1565b611734565b3480156104bc57600080fd5b5061037f611800565b3480156104d157600080fd5b506102e36104e0366004615301565b6118b3565b3480156104f157600080fd5b5061037f7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561052557600080fd5b5060335460ff1661028c565b34801561053d57600080fd5b506102e361054c366004615343565b6119ae565b34801561055d57600080fd5b5061012d546001600160a01b0316610305565b34801561057c57600080fd5b5061030561058b366004615068565b611c9d565b34801561059c57600080fd5b5061037f6105ab36600461537c565b611cfd565b3480156105bc57600080fd5b506102e36105cb3660046153e7565b6121f7565b3480156105dc57600080fd5b506102e36105eb366004615343565b61227b565b3480156105fc57600080fd5b506102e361060b3660046150ee565b61281b565b34801561061c57600080fd5b5061037f61062b3660046150ee565b612df2565b34801561063c57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b34801561066f57600080fd5b5061037f61067e366004615068565b600090815261012f602052604090205490565b34801561069d57600080fd5b506102e36106ac366004615404565b612e78565b3480156106bd57600080fd5b5061028c6106cc366004615068565b600090815261012f6020526040902054151590565b3480156106ed57600080fd5b506102e3612e9a565b34801561070257600080fd5b506102e3610711366004615431565b612f3f565b34801561072257600080fd5b506102b661300b565b34801561073757600080fd5b506102e36107463660046154b5565b61301a565b34801561075757600080fd5b506102e36107663660046154e3565b613025565b34801561077757600080fd5b5061037f61078636600461554f565b613057565b34801561079757600080fd5b506102b66107a6366004615068565b61308b565b3480156107b757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b3480156107ea57600080fd5b5061028c6107f9366004615584565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b34801561083457600080fd5b506102e36108433660046150ee565b6130f1565b34801561085457600080fd5b5061037f610863366004615081565b613197565b34801561087457600080fd5b5061037f600080516020615c1083398151915281565b34801561089657600080fd5b506102e36108a53660046155b2565b61322d565b60006108b582613260565b806108d057506001600160e01b0319821663019c676f60e31b145b92915050565b606060fb80546108e5906155e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610911906155e1565b801561095e5780601f106109335761010080835404028352916020019161095e565b820191906000526020600020905b81548152906001019060200180831161094157829003601f168201915b5050505050905090565b600054610100900460ff16158080156109885750600054600160ff909116105b806109a25750303b1580156109a2575060005460ff166001145b610a0a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a2d576000805461ff0019166101001790555b8351600003610a4e57604051620beefb60e01b815260040160405180910390fd5b8251600003610a70576040516343b47bcb60e01b815260040160405180910390fd5b610a786132b0565b610a8284846132d9565b610a8a61330a565b610a9382613339565b8015610ad9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610aea82613369565b50600090815260ff60205260409020546001600160a01b031690565b6000610b1182611c9d565b9050806001600160a01b0316836001600160a01b031603610b7e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a01565b336001600160a01b0382161480610b9a5750610b9a81336107f9565b610c0c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a01565b610c1683836133c8565b505050565b610c253382613436565b610c415760405162461bcd60e51b8152600401610a0190615615565b610c168383836134b5565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c945760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cdd600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b031614610d035760405162461bcd60e51b8152600401610a01906156ae565b610d0c81613626565b60408051600080825260208201909252610d2891839190613846565b50565b6000610d356139b1565b610d3e856139f7565b6101608501516001600160a01b0381163314610d6d57604051634ace04f960e01b815260040160405180910390fd5b610d78816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906156fa565b9050610de9816003613a5e565b4264ffffffffff16876101a0015164ffffffffff1611610e435760405162461bcd60e51b815260206004820152601560248201527413db19081c1bdb1a58de481a5cc8195e1c1a5c9959605a1b6044820152606401610a01565b85610180015164ffffffffff1687610180015164ffffffffff1614610ec15760405162461bcd60e51b815260206004820152602e60248201527f426f746820706f6c6963696573206d7573742068617665207468652073616d6560448201526d207374617274696e67206461746560901b6064820152608401610a01565b8560200151876020015111158015610ee157508560c001518760c0015111155b8015610ef557508560e001518760e0015111155b8015610f0b575085610120015187610120015111155b8015610f21575085610140015187610140015111155b8015610f3557508560600151876060015111155b8015610f4957508560800151876080015111155b8015610f5f575085610100015187610100015111155b8015610f835750856101a0015164ffffffffff16876101a0015164ffffffffff1611155b8015610fa557508561016001516001600160a01b0316826001600160a01b0316145b61100d5760405162461bcd60e51b815260206004820152603360248201527f4e657720706f6c696379206d7573742062652067726561746572206f7220657160448201527275616c207468616e206f6c6420706f6c69637960681b6064820152608401610a01565b6110178285613057565b808752600090815261012f60205260409020541561106f5760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b61107886613a99565b8651600090815261012f6020526040812091909155875161109890611c9d565b90506110b881886000015160405180602001604052806000815250613b18565b8751600090815261012f602052604080822091909155516355c1da5f60e11b81526001600160a01b0383169063ab83b4be906110fa908b908b906004016157cf565b600060405180830381600087803b15801561111457600080fd5b505af1158015611128573d6000803e3d6000fd5b5050505060008860c001518860c001516111429190615802565b9050801561117f5761117f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016888584613b4b565b8861014001518861014001516111959190615802565b905080156112355761123587846001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120391906156fa565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919084613b4b565b88610120015188610120015161124b9190615802565b905080156112955761129587846001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b8860e001518860e001516112a99190615802565b905080156112ee5761012d546112ee906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a911684613b4b565b8861010001518861010001516113049190615802565b90506000811180156113895750836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906156fa565b6001600160a01b0316876001600160a01b031614155b156113d0576113d087856001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b836001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b896040516114099190615815565b60405180910390a2875189516040516001600160a01b038716907f4ff4ac703cb703b7ea535d47e65e64b4cabf11b3e2eb41f152dab17971953add90600090a4885188516114579190613ba5565b50508551925050505b949350505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561150557600080fd5b505afa158015611519573d6000803e3d6000fd5b50505050611525613ca5565b5050565b610c1683838360405180602001604052806000815250613025565b61154c6139b1565b611557826001613a5e565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615824565b905061161d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338585613b4b565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb9190615824565b6116c59190615802565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190615824565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361177c5760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117c5600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b0316146117eb5760405162461bcd60e51b8152600401610a01906156ae565b6117f482613626565b61152582826001613846565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a01565b50600080516020615bf083398151915290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561194a57600080fd5b505afa15801561195e573d6000803e3d6000fd5b505050508161013090816119729190615883565b506040513381526004907fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f906020015b60405180910390a25050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015611a4b57600080fd5b505afa158015611a5f573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff166003811115611a9357611a9361510b565b03611ab157604051637d91856360e01b815260040160405180910390fd5b6001846003811115611ac557611ac561510b565b1480611ae257506002846003811115611ae057611ae061510b565b145b15611b88576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c10833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611b6b57600080fd5b505afa158015611b7f573d6000803e3d6000fd5b50505050611c25565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c57833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050505b80548490829060ff19166001836003811115611c4357611c4361510b565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91611c8e91610100900460ff16908890615943565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806108d05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b6000611d076139b1565b6101608501516001600160a01b0381163314611d3657604051634ace04f960e01b815260040160405180910390fd5b611d41816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906156fa565b9050611db2816003613a5e565b611dbc8285613057565b808852600090815261012f602052604090205415611e145760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b611e1d87613a99565b8751600090815261012f602090815260408083209390935589518351918201909352908152611e4d918791613b18565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611e79908a90600401615815565b600060405180830381600087803b158015611e9357600080fd5b505af1158015611ea7573d6000803e3d6000fd5b50505060c0880151611ee891506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613b4b565b61014087015115611f9157611f9186826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5991906156fa565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b6101208701511561203a5761203a86826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200291906156fa565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b61012d5460e088015161207f916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613b4b565b60008761010001511180156121075750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906156fa565b6001600160a01b0316866001600160a01b031614155b156121aa576121aa86836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217291906156fa565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516121e39190615815565b60405180910390a250509351949350505050565b6121ff6139b1565b426122126101c083016101a08401615969565b64ffffffffff1611156122605760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b610d2861227236839003830183615984565b60006001613cf7565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561230057600080fd5b505afa158015612314573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff1660038111156123485761234861510b565b146123665760405163cf9a96f360e01b815260040160405180910390fd5b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d291906156fa565b6001600160a01b0316146123f957604051630fdee24360e11b815260040160405180910390fd5b600183600381111561240d5761240d61510b565b14801561248b57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061244890639077062160e01b906004016159a1565b602060405180830381865afa158015612465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248991906159b6565b155b80612523575060038360038111156124a5576124a561510b565b14801561252357506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906124e090630e72532960e11b906004016159a1565b602060405180830381865afa1580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252191906159b6565b155b806125bb5750600283600381111561253d5761253d61510b565b1480156125bb57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906125789063da40804f60e01b906004016159a1565b602060405180830381865afa158015612595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b991906159b6565b155b156125dd57838360405163502c9a5f60e01b8152600401610a019291906159d3565b8054600160ff198216811783558491839161ffff199091161761010083600381111561260b5761260b61510b565b021790555060038360038111156126245761262461510b565b036127d15760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269291906156fa565b90506001600160a01b038116156126ff576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276191906156fa565b90506001600160a01b038116156127ce576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156127b557600080fd5b505af11580156127c9573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161280d929190615943565b60405180910390a250505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156128a057600080fd5b505afa1580156128b4573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff1660038111156128e9576128e961510b565b1461290757604051635c92b23960e11b815260040160405180910390fd5b60018154610100900460ff1660038111156129245761292461510b565b03612a2457826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298b9190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a049190615824565b604051631d0ec0ab60e01b8152600401610a019291906159ec565b612d7e565b60028154610100900460ff166003811115612a4157612a4161510b565b03612afd57826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa89190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b60038154610100900460ff166003811115612b1a57612b1a61510b565b03612d7e576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b869190615824565b15612bdb578160000160019054906101000a900460ff16816001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3f91906156fa565b90506001600160a01b03811615612cac576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612c9357600080fd5b505af1158015612ca7573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906156fa565b90506001600160a01b03811615612d7b576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612dc591610100900460ff1690600090615943565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b038216612e5c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a01565b506001600160a01b0316600090815260fe602052604090205490565b612e806139b1565b611525612e9236849003840184615984565b826000613cf7565b600080516020615c578339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612f1f57600080fd5b505afa158015612f33573d6000803e3d6000fd5b50505050610d28614037565b612f476139b1565b60005b81811015610c165742838383818110612f6557612f65615a03565b90506101c002016101a0016020810190612f7f9190615969565b64ffffffffff161115612fcd5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b612ff9838383818110612fe257612fe2615a03565b90506101c002018036038101906122729190615984565b8061300381615a19565b915050612f4a565b606060fc80546108e5906155e1565b611525338383614074565b61302f3383613436565b61304b5760405162461bcd60e51b8152600401610a0190615615565b610ad984848484614143565b60006130846bffffffffffffffffffffffff83166bffffffffffffffffffffffff19606086901b16615a32565b9392505050565b606061309682613369565b60006130a0614176565b905060008151116130c05760405180602001604052806000815250613084565b806130ca84614186565b6040516020016130db929190615a45565b6040516020818303038152906040529392505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b5050505061152582614219565b60006131a16139b1565b6131ac8360016142a2565b6001600160a01b03831663f3fef3a3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130849190615824565b6132356139b1565b61152561324736849003840184615984565b82613253576000613259565b83602001355b6000613cf7565b60006001600160e01b031982166380ac58cd60e01b148061329157506001600160e01b03198216635b5e139f60e01b145b806108d057506301ffc9a760e01b6001600160e01b03198316146108d0565b600054610100900460ff166132d75760405162461bcd60e51b8152600401610a0190615a74565b565b600054610100900460ff166133005760405162461bcd60e51b8152600401610a0190615a74565b6115258282614302565b600054610100900460ff166133315760405162461bcd60e51b8152600401610a0190615a74565b6132d7614342565b600054610100900460ff166133605760405162461bcd60e51b8152600401610a0190615a74565b610d2881614219565b600081815260fd60205260409020546001600160a01b0316610d285760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133fd82611c9d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061344283611c9d565b9050806001600160a01b0316846001600160a01b0316148061348a57506001600160a01b038082166000908152610100602090815260408083209388168352929052205460ff165b806114605750836001600160a01b03166134a384610adf565b6001600160a01b031614949350505050565b826001600160a01b03166134c882611c9d565b6001600160a01b0316146134ee5760405162461bcd60e51b8152600401610a0190615abf565b6001600160a01b0382166135505760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b61355d8383836001614375565b826001600160a01b031661357082611c9d565b6001600160a01b0316146135965760405162461bcd60e51b8152600401610a0190615abf565b600081815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080546000190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b1580156136c357600080fd5b505afa1580156136d7573d6000803e3d6000fd5b5050505060008390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c91906156fa565b6001600160a01b03161461379357604051630f13081760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f91906156fa565b6001600160a01b031614610ad9576040516324a41b4360e11b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561387957610c1683614382565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156138d3575060408051601f3d908101601f191682019092526138d091810190615824565b60015b6139365760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a01565b600080516020615bf083398151915281146139a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a01565b50610c1683838361441e565b60335460ff16156132d75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a01565b805115801590613a1f57508051600090815261012f6020526040902054613a1d82613a99565b145b610d285760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610a01565b6001613a6a8383614443565b6003811115613a7b57613a7b61510b565b1461152557604051630422f25f60e01b815260040160405180910390fd5b600081604051602001613aac9190615815565b60408051601f198184030181529190528051602090910120905080613b135760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610a01565b919050565b613b2283836144b6565b613b2f600084848461464f565b610c165760405162461bcd60e51b8152600401610a0190615b04565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ad990859061474d565b6000613bb083611c9d565b90506001600160a01b0381163b613bc657505050565b613bd781635ee0c7dd60e01b614822565b613be057505050565b60006001600160a01b038216635ee0c7dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af1158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c709190615b56565b90506001600160e01b03198116635ee0c7dd60e01b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b613cad61483e565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613d00836139f7565b61016083015181158015613d1d57506001600160a01b0381163314155b15613d3b57604051634ace04f960e01b815260040160405180910390fd5b821580613d53575042846101a0015164ffffffffff16115b613d9f5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610a01565b613daa8160026142a2565b8360200151831115613df75760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610a01565b600080841190506000826001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6291906156fa565b9050613e6f8160036142a2565b8551600090815261012f60205260408120558115613f01576000613e968760000151611c9d565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613ec99084908b908b90600401615b73565b600060405180830381600087803b158015613ee357600080fd5b505af1158015613ef7573d6000803e3d6000fd5b5050505050613f60565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613f2d908990600401615815565b600060405180830381600087803b158015613f4757600080fd5b505af1158015613f5b573d6000803e3d6000fd5b505050505b6020860151604051636a448ef160e01b815260048101919091526001600160a01b03841690636a448ef190602401600060405180830381600087803b158015613fa857600080fd5b505af1158015613fbc573d6000803e3d6000fd5b5050505085600001518661016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8760405161400591815260200190565b60405180910390a3841561402457855161401f9086614887565b61402f565b855161402f90614987565b505050505050565b61403f6139b1565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cda3390565b816001600160a01b0316836001600160a01b0316036140d55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a01565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61414e8484846134b5565b61415a8484848461464f565b610ad95760405162461bcd60e51b8152600401610a0190615b04565b606061013080546108e5906155e1565b6060600061419383614a83565b600101905060008167ffffffffffffffff8111156141b3576141b3614f0e565b6040519080825280601f01601f1916602001820160405280156141dd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846141e757509392505050565b6001600160a01b038116614240576040516307a2ee8b60e11b815260040160405180910390fd5b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b60006142ae8383614443565b905060018160038111156142c4576142c461510b565b141580156142e4575060028160038111156142e1576142e161510b565b14155b15610c165760405163d08ef1ff60e01b815260040160405180910390fd5b600054610100900460ff166143295760405162461bcd60e51b8152600401610a0190615a74565b60fb6143358382615883565b5060fc610c168282615883565b600054610100900460ff166143695760405162461bcd60e51b8152600401610a0190615a74565b6033805460ff19169055565b61437d6139b1565b610ad9565b6001600160a01b0381163b6143ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a01565b600080516020615bf083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61442783614b5b565b6000825111806144345750805b15610c1657610ad98383614b9b565b6001600160a01b038216600090815261012e6020526040812082600381111561446e5761446e61510b565b8154610100900460ff1660038111156144895761448961510b565b146144ab57838360405163502c9a5f60e01b8152600401610a019291906159d3565b5460ff169392505050565b6001600160a01b03821661450c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a01565b600081815260fd60205260409020546001600160a01b0316156145715760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b61457f600083836001614375565b600081815260fd60205260409020546001600160a01b0316156145e45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b6001600160a01b038216600081815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561474557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614693903390899088908890600401615ba0565b6020604051808303816000875af19250505080156146ce575060408051601f3d908101601f191682019092526146cb91810190615b56565b60015b61472b573d8080156146fc576040519150601f19603f3d011682016040523d82523d6000602084013e614701565b606091505b5080516000036147235760405162461bcd60e51b8152600401610a0190615b04565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611460565b506001611460565b60006147a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bc09092919063ffffffff16565b90508051600014806147c35750808060200190518101906147c391906159b6565b610c165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a01565b600061482d83614bcf565b801561308457506130848383614c02565b60335460ff166132d75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a01565b600061489283611c9d565b90506001600160a01b0381163b6148a857505050565b6148b981633ece0a8960e01b614822565b6148c257505050565b60006001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af115801561492e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149529190615b56565b90506001600160e01b03198116636b140e9f60e11b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b600061499282611c9d565b90506001600160a01b0381163b6149a7575050565b6149b881633ece0a8960e01b614822565b6149c0575050565b6001600160a01b03811663e8e617b7620249f0336040516001600160e01b031960e085901b1681526001600160a01b0390911660048201523060248201526044810186905260640160206040518083038160008887f193505050508015614a44575060408051601f3d908101601f19168201909252614a4191810190615b56565b60015b610c16576040516001600160a01b038216815282907f6ce8016f81523f240956bca9a698e643d09e84e7d0e931470b1016baf1027bd0906020016119a2565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614ac25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614aee576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614b0c57662386f26fc10000830492506010015b6305f5e1008310614b24576305f5e100830492506008015b6127108310614b3857612710830492506004015b60648310614b4a576064830492506002015b600a83106108d05760010192915050565b614b6481614382565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606130848383604051806060016040528060278152602001615c3060279139614c96565b60606114608484600085614d0e565b6000614be2826301ffc9a760e01b614c02565b80156108d05750614bfb826001600160e01b0319614c02565b1592915050565b6000806301ffc9a760e01b83604051602401614c1e91906159a1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015614c7f575060208210155b8015614c8b5750600081115b979650505050505050565b6060600080856001600160a01b031685604051614cb39190615bd3565b600060405180830381855af49150503d8060008114614cee576040519150601f19603f3d011682016040523d82523d6000602084013e614cf3565b606091505b5091509150614d0486838387614dda565b9695505050505050565b606082471015614d6f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a01565b600080866001600160a01b03168587604051614d8b9190615bd3565b60006040518083038185875af1925050503d8060008114614dc8576040519150601f19603f3d011682016040523d82523d6000602084013e614dcd565b606091505b5091509150614c8b878383875b60608315614e49578251600003614e42576001600160a01b0385163b614e425760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a01565b5081611460565b6114608383815115614e5e5781518083602001fd5b8060405162461bcd60e51b8152600401610a019190614efb565b6001600160e01b031981168114610d2857600080fd5b600060208284031215614ea057600080fd5b813561308481614e78565b60005b83811015614ec6578181015183820152602001614eae565b50506000910152565b60008151808452614ee7816020860160208601614eab565b601f01601f19169290920160200192915050565b6020815260006130846020830184614ecf565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614f4857614f48614f0e565b60405290565b600082601f830112614f5f57600080fd5b813567ffffffffffffffff80821115614f7a57614f7a614f0e565b604051601f8301601f19908116603f01168101908282118183101715614fa257614fa2614f0e565b81604052838152866020858801011115614fbb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610d2857600080fd5b60008060006060848603121561500557600080fd5b833567ffffffffffffffff8082111561501d57600080fd5b61502987838801614f4e565b9450602086013591508082111561503f57600080fd5b5061504c86828701614f4e565b925050604084013561505d81614fdb565b809150509250925092565b60006020828403121561507a57600080fd5b5035919050565b6000806040838503121561509457600080fd5b823561509f81614fdb565b946020939093013593505050565b6000806000606084860312156150c257600080fd5b83356150cd81614fdb565b925060208401356150dd81614fdb565b929592945050506040919091013590565b60006020828403121561510057600080fd5b813561308481614fdb565b634e487b7160e01b600052602160045260246000fd5b60048110610d2857634e487b7160e01b600052602160045260246000fd5b6020810161514c83615121565b91905290565b8035613b1381614fdb565b803564ffffffffff81168114613b1357600080fd5b60006101c0828403121561518557600080fd5b61518d614f24565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016061520b818401615152565b9082015261018061521d83820161515d565b908201526101a061522f83820161515d565b9082015292915050565b80356bffffffffffffffffffffffff81168114613b1357600080fd5b6000806000806103c0858703121561526c57600080fd5b6152768686615172565b9350615286866101c08701615172565b925061038085013561529781614fdb565b91506152a66103a08601615239565b905092959194509250565b600080604083850312156152c457600080fd5b82356152cf81614fdb565b9150602083013567ffffffffffffffff8111156152eb57600080fd5b6152f785828601614f4e565b9150509250929050565b60006020828403121561531357600080fd5b813567ffffffffffffffff81111561532a57600080fd5b61146084828501614f4e565b60048110610d2857600080fd5b6000806040838503121561535657600080fd5b823561536181614fdb565b9150602083013561537181615336565b809150509250929050565b600080600080610220858703121561539357600080fd5b61539d8686615172565b93506101c08501356153ae81614fdb565b92506101e08501356153bf81614fdb565b91506152a66102008601615239565b60006101c082840312156153e157600080fd5b50919050565b60006101c082840312156153fa57600080fd5b61308483836153ce565b6000806101e0838503121561541857600080fd5b61542284846153ce565b946101c0939093013593505050565b6000806020838503121561544457600080fd5b823567ffffffffffffffff8082111561545c57600080fd5b818501915085601f83011261547057600080fd5b81358181111561547f57600080fd5b8660206101c08302850101111561549557600080fd5b60209290920196919550909350505050565b8015158114610d2857600080fd5b600080604083850312156154c857600080fd5b82356154d381614fdb565b91506020830135615371816154a7565b600080600080608085870312156154f957600080fd5b843561550481614fdb565b9350602085013561551481614fdb565b925060408501359150606085013567ffffffffffffffff81111561553757600080fd5b61554387828801614f4e565b91505092959194509250565b6000806040838503121561556257600080fd5b823561556d81614fdb565b915061557b60208401615239565b90509250929050565b6000806040838503121561559757600080fd5b82356155a281614fdb565b9150602083013561537181614fdb565b6000806101e083850312156155c657600080fd5b6155d084846153ce565b91506101c0830135615371816154a7565b600181811c908216806155f557607f821691505b6020821081036153e157634e487b7160e01b600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561570c57600080fd5b815161308481614fdb565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516157a0828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610ad9565b61038081016157de8285615717565b6130846101c0830184615717565b634e487b7160e01b600052601160045260246000fd5b818103818111156108d0576108d06157ec565b6101c081016108d08284615717565b60006020828403121561583657600080fd5b5051919050565b601f821115610c1657600081815260208120601f850160051c810160208610156158645750805b601f850160051c820191505b8181101561402f57828155600101615870565b815167ffffffffffffffff81111561589d5761589d614f0e565b6158b1816158ab84546155e1565b8461583d565b602080601f8311600181146158e657600084156158ce5750858301515b600019600386901b1c1916600185901b17855561402f565b600085815260208120601f198616915b82811015615915578886015182559484019460019091019084016158f6565b50858210156159335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040810161595084615121565b83825261595c83615121565b8260208301529392505050565b60006020828403121561597b57600080fd5b6130848261515d565b60006101c0828403121561599757600080fd5b6130848383615172565b6001600160e01b031991909116815260200190565b6000602082840312156159c857600080fd5b8151613084816154a7565b6001600160a01b03831681526040810161595c83615121565b604081016159f984615121565b9281526020015290565b634e487b7160e01b600052603260045260246000fd5b600060018201615a2b57615a2b6157ec565b5060010190565b808201808211156108d0576108d06157ec565b60008351615a57818460208801614eab565b835190830190615a6b818360208801614eab565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060208284031215615b6857600080fd5b815161308481614e78565b6001600160a01b03841681526102008101615b916020830185615717565b826101e0830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614d0490830184614ecf565b60008251615be5818460208701614eab565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212207bec76ac01a477aae48ee4cb156913fb71820f48dcf1320fef3499298e2af87f64736f6c63430008100033",
1772
+ "deployedBytecode": "0x6080604052600436106102675760003560e01c80636769a76f1161014457806395d89b41116100b6578063e5a6b10f1161007a578063e5a6b10f146107ab578063e985e9c5146107de578063f0f4426014610828578063f3fef3a314610848578063f67b2bad14610868578063ffa600e31461088a57600080fd5b806395d89b4114610716578063a22cb4651461072b578063b88d4fde1461074b578063c016f88a1461076b578063c87b56dd1461078b57600080fd5b806371907f171161010857806371907f1714610630578063792da09e146106635780637a702b3c1461069157806382afd23b146106b15780638456cb59146106e15780638c916d46146106f657600080fd5b80636769a76f146105905780636af6f1ef146105b05780636b8734e7146105d05780636f86c897146105f057806370a082311461061057600080fd5b806342842e0e116101dd57806355f804b3116101a157806355f804b3146104c55780635b494dd5146104e55780635c975abb146105195780635fcbf4451461053157806361d027b3146105515780636352211e1461057057600080fd5b806342842e0e1461042957806347e7ef24146104495780634a47a3e0146104695780634f1ef2861461049d57806352d1902d146104b057600080fd5b806323b872dd1161022f57806323b872dd1461033d57806324ea54f41461035d57806333d6157a1461038d5780633659cfe6146103d45780633ed7c1ae146103f45780633f4ba83a1461041457600080fd5b806301ffc9a71461026c57806306fdde03146102a1578063077f224a146102c3578063081812fc146102e5578063095ea7b31461031d575b600080fd5b34801561027857600080fd5b5061028c610287366004614e8e565b6108aa565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102b66108d6565b6040516102989190614efb565b3480156102cf57600080fd5b506102e36102de366004614ff0565b610968565b005b3480156102f157600080fd5b50610305610300366004615068565b610adf565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b506102e3610338366004615081565b610b06565b34801561034957600080fd5b506102e36103583660046150ad565b610c1b565b34801561036957600080fd5b5061037f600080516020615c5783398151915281565b604051908152602001610298565b34801561039957600080fd5b506103c76103a83660046150ee565b6001600160a01b0316600090815261012e602052604090205460ff1690565b604051610298919061513f565b3480156103e057600080fd5b506102e36103ef3660046150ee565b610c4c565b34801561040057600080fd5b5061037f61040f366004615255565b610d2b565b34801561042057600080fd5b506102e3611468565b34801561043557600080fd5b506102e36104443660046150ad565b611529565b34801561045557600080fd5b506102e3610464366004615081565b611544565b34801561047557600080fd5b5061037f7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102e36104ab3660046152b1565b611734565b3480156104bc57600080fd5b5061037f611800565b3480156104d157600080fd5b506102e36104e0366004615301565b6118b3565b3480156104f157600080fd5b5061037f7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561052557600080fd5b5060335460ff1661028c565b34801561053d57600080fd5b506102e361054c366004615343565b6119ae565b34801561055d57600080fd5b5061012d546001600160a01b0316610305565b34801561057c57600080fd5b5061030561058b366004615068565b611c9d565b34801561059c57600080fd5b5061037f6105ab36600461537c565b611cfd565b3480156105bc57600080fd5b506102e36105cb3660046153e7565b6121f7565b3480156105dc57600080fd5b506102e36105eb366004615343565b61227b565b3480156105fc57600080fd5b506102e361060b3660046150ee565b61281b565b34801561061c57600080fd5b5061037f61062b3660046150ee565b612df2565b34801561063c57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b34801561066f57600080fd5b5061037f61067e366004615068565b600090815261012f602052604090205490565b34801561069d57600080fd5b506102e36106ac366004615404565b612e78565b3480156106bd57600080fd5b5061028c6106cc366004615068565b600090815261012f6020526040902054151590565b3480156106ed57600080fd5b506102e3612e9a565b34801561070257600080fd5b506102e3610711366004615431565b612f3f565b34801561072257600080fd5b506102b661300b565b34801561073757600080fd5b506102e36107463660046154b5565b61301a565b34801561075757600080fd5b506102e36107663660046154e3565b613025565b34801561077757600080fd5b5061037f61078636600461554f565b613057565b34801561079757600080fd5b506102b66107a6366004615068565b61308b565b3480156107b757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610305565b3480156107ea57600080fd5b5061028c6107f9366004615584565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b34801561083457600080fd5b506102e36108433660046150ee565b6130f1565b34801561085457600080fd5b5061037f610863366004615081565b613197565b34801561087457600080fd5b5061037f600080516020615c1083398151915281565b34801561089657600080fd5b506102e36108a53660046155b2565b61322d565b60006108b582613260565b806108d057506001600160e01b0319821663019c676f60e31b145b92915050565b606060fb80546108e5906155e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610911906155e1565b801561095e5780601f106109335761010080835404028352916020019161095e565b820191906000526020600020905b81548152906001019060200180831161094157829003601f168201915b5050505050905090565b600054610100900460ff16158080156109885750600054600160ff909116105b806109a25750303b1580156109a2575060005460ff166001145b610a0a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610a2d576000805461ff0019166101001790555b8351600003610a4e57604051620beefb60e01b815260040160405180910390fd5b8251600003610a70576040516343b47bcb60e01b815260040160405180910390fd5b610a786132b0565b610a8284846132d9565b610a8a61330a565b610a9382613339565b8015610ad9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610aea82613369565b50600090815260ff60205260409020546001600160a01b031690565b6000610b1182611c9d565b9050806001600160a01b0316836001600160a01b031603610b7e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a01565b336001600160a01b0382161480610b9a5750610b9a81336107f9565b610c0c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a01565b610c1683836133c8565b505050565b610c253382613436565b610c415760405162461bcd60e51b8152600401610a0190615615565b610c168383836134b5565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c945760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cdd600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b031614610d035760405162461bcd60e51b8152600401610a01906156ae565b610d0c81613626565b60408051600080825260208201909252610d2891839190613846565b50565b6000610d356139b1565b610d3e856139f7565b6101608501516001600160a01b0381163314610d6d57604051634ace04f960e01b815260040160405180910390fd5b610d78816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906156fa565b9050610de9816003613a5e565b4264ffffffffff16876101a0015164ffffffffff1611610e435760405162461bcd60e51b815260206004820152601560248201527413db19081c1bdb1a58de481a5cc8195e1c1a5c9959605a1b6044820152606401610a01565b85610180015164ffffffffff1687610180015164ffffffffff1614610ec15760405162461bcd60e51b815260206004820152602e60248201527f426f746820706f6c6963696573206d7573742068617665207468652073616d6560448201526d207374617274696e67206461746560901b6064820152608401610a01565b8560200151876020015111158015610ee157508560c001518760c0015111155b8015610ef557508560e001518760e0015111155b8015610f0b575085610120015187610120015111155b8015610f21575085610140015187610140015111155b8015610f3557508560600151876060015111155b8015610f4957508560800151876080015111155b8015610f5f575085610100015187610100015111155b8015610f835750856101a0015164ffffffffff16876101a0015164ffffffffff1611155b8015610fa557508561016001516001600160a01b0316826001600160a01b0316145b61100d5760405162461bcd60e51b815260206004820152603360248201527f4e657720706f6c696379206d7573742062652067726561746572206f7220657160448201527275616c207468616e206f6c6420706f6c69637960681b6064820152608401610a01565b6110178285613057565b808752600090815261012f60205260409020541561106f5760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b61107886613a99565b8651600090815261012f6020526040812091909155875161109890611c9d565b90506110b881886000015160405180602001604052806000815250613b18565b8751600090815261012f602052604080822091909155516355c1da5f60e11b81526001600160a01b0383169063ab83b4be906110fa908b908b906004016157cf565b600060405180830381600087803b15801561111457600080fd5b505af1158015611128573d6000803e3d6000fd5b5050505060008860c001518860c001516111429190615802565b9050801561117f5761117f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016888584613b4b565b8861014001518861014001516111959190615802565b905080156112355761123587846001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120391906156fa565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016919084613b4b565b88610120015188610120015161124b9190615802565b905080156112955761129587846001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b8860e001518860e001516112a99190615802565b905080156112ee5761012d546112ee906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a911684613b4b565b8861010001518861010001516113049190615802565b90506000811180156113895750836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906156fa565b6001600160a01b0316876001600160a01b031614155b156113d0576113d087856001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111df573d6000803e3d6000fd5b836001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b896040516114099190615815565b60405180910390a2875189516040516001600160a01b038716907f4ff4ac703cb703b7ea535d47e65e64b4cabf11b3e2eb41f152dab17971953add90600090a4885188516114579190613ba5565b50508551925050505b949350505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561150557600080fd5b505afa158015611519573d6000803e3d6000fd5b50505050611525613ca5565b5050565b610c1683838360405180602001604052806000815250613025565b61154c6139b1565b611557826001613a5e565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190615824565b905061161d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338585613b4b565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bb9190615824565b6116c59190615802565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190615824565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361177c5760405162461bcd60e51b8152600401610a0190615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117c5600080516020615bf0833981519152546001600160a01b031690565b6001600160a01b0316146117eb5760405162461bcd60e51b8152600401610a01906156ae565b6117f482613626565b61152582826001613846565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118a05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a01565b50600080516020615bf083398151915290565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561194a57600080fd5b505afa15801561195e573d6000803e3d6000fd5b505050508161013090816119729190615883565b506040513381526004907fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f906020015b60405180910390a25050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015611a4b57600080fd5b505afa158015611a5f573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff166003811115611a9357611a9361510b565b03611ab157604051637d91856360e01b815260040160405180910390fd5b6001846003811115611ac557611ac561510b565b1480611ae257506002846003811115611ae057611ae061510b565b145b15611b88576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c10833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611b6b57600080fd5b505afa158015611b7f573d6000803e3d6000fd5b50505050611c25565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad600080516020615c57833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050505b80548490829060ff19166001836003811115611c4357611c4361510b565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91611c8e91610100900460ff16908890615943565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806108d05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b6000611d076139b1565b6101608501516001600160a01b0381163314611d3657604051634ace04f960e01b815260040160405180910390fd5b611d41816002613a5e565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906156fa565b9050611db2816003613a5e565b611dbc8285613057565b808852600090815261012f602052604090205415611e145760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b6044820152606401610a01565b611e1d87613a99565b8751600090815261012f602090815260408083209390935589518351918201909352908152611e4d918791613b18565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611e79908a90600401615815565b600060405180830381600087803b158015611e9357600080fd5b505af1158015611ea7573d6000803e3d6000fd5b50505060c0880151611ee891506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613b4b565b61014087015115611f9157611f9186826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5991906156fa565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b6101208701511561203a5761203a86826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200291906156fa565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b61012d5460e088015161207f916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613b4b565b60008761010001511180156121075750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906156fa565b6001600160a01b0316866001600160a01b031614155b156121aa576121aa86836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217291906156fa565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613b4b565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516121e39190615815565b60405180910390a250509351949350505050565b6121ff6139b1565b426122126101c083016101a08401615969565b64ffffffffff1611156122605760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b610d2861227236839003830183615984565b60006001613cf7565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561230057600080fd5b505afa158015612314573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff1660038111156123485761234861510b565b146123665760405163cf9a96f360e01b815260040160405180910390fd5b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d291906156fa565b6001600160a01b0316146123f957604051630fdee24360e11b815260040160405180910390fd5b600183600381111561240d5761240d61510b565b14801561248b57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061244890639077062160e01b906004016159a1565b602060405180830381865afa158015612465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248991906159b6565b155b80612523575060038360038111156124a5576124a561510b565b14801561252357506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906124e090630e72532960e11b906004016159a1565b602060405180830381865afa1580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252191906159b6565b155b806125bb5750600283600381111561253d5761253d61510b565b1480156125bb57506040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906125789063da40804f60e01b906004016159a1565b602060405180830381865afa158015612595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b991906159b6565b155b156125dd57838360405163502c9a5f60e01b8152600401610a019291906159d3565b8054600160ff198216811783558491839161ffff199091161761010083600381111561260b5761260b61510b565b021790555060038360038111156126245761262461510b565b036127d15760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269291906156fa565b90506001600160a01b038116156126ff576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156126e657600080fd5b505af11580156126fa573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276191906156fa565b90506001600160a01b038116156127ce576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b1580156127b557600080fd5b505af11580156127c9573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef84600160405161280d929190615943565b60405180910390a250505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156128a057600080fd5b505afa1580156128b4573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff1660038111156128e9576128e961510b565b1461290757604051635c92b23960e11b815260040160405180910390fd5b60018154610100900460ff1660038111156129245761292461510b565b03612a2457826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298b9190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a049190615824565b604051631d0ec0ab60e01b8152600401610a019291906159ec565b612d7e565b60028154610100900460ff166003811115612a4157612a4161510b565b03612afd57826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa89190615824565b15612a1f578060000160019054906101000a900460ff16836001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b60038154610100900460ff166003811115612b1a57612b1a61510b565b03612d7e576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b869190615824565b15612bdb578160000160019054906101000a900460ff16816001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e0573d6000803e3d6000fd5b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3f91906156fa565b90506001600160a01b03811615612cac576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612c9357600080fd5b505af1158015612ca7573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e91906156fa565b90506001600160a01b03811615612d7b576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef91612dc591610100900460ff1690600090615943565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b038216612e5c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a01565b506001600160a01b0316600090815260fe602052604090205490565b612e806139b1565b611525612e9236849003840184615984565b826000613cf7565b600080516020615c578339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612f1f57600080fd5b505afa158015612f33573d6000803e3d6000fd5b50505050610d28614037565b612f476139b1565b60005b81811015610c165742838383818110612f6557612f65615a03565b90506101c002016101a0016020810190612f7f9190615969565b64ffffffffff161115612fcd5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610a01565b612ff9838383818110612fe257612fe2615a03565b90506101c002018036038101906122729190615984565b8061300381615a19565b915050612f4a565b606060fc80546108e5906155e1565b611525338383614074565b61302f3383613436565b61304b5760405162461bcd60e51b8152600401610a0190615615565b610ad984848484614143565b60006130846bffffffffffffffffffffffff83166bffffffffffffffffffffffff19606086901b16615a32565b9392505050565b606061309682613369565b60006130a0614176565b905060008151116130c05760405180602001604052806000815250613084565b806130ca84614186565b6040516020016130db929190615a45565b6040516020818303038152906040529392505050565b600080516020615c108339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b5050505061152582614219565b60006131a16139b1565b6131ac8360016142a2565b6001600160a01b03831663f3fef3a3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130849190615824565b6132356139b1565b61152561324736849003840184615984565b82613253576000613259565b83602001355b6000613cf7565b60006001600160e01b031982166380ac58cd60e01b148061329157506001600160e01b03198216635b5e139f60e01b145b806108d057506301ffc9a760e01b6001600160e01b03198316146108d0565b600054610100900460ff166132d75760405162461bcd60e51b8152600401610a0190615a74565b565b600054610100900460ff166133005760405162461bcd60e51b8152600401610a0190615a74565b6115258282614302565b600054610100900460ff166133315760405162461bcd60e51b8152600401610a0190615a74565b6132d7614342565b600054610100900460ff166133605760405162461bcd60e51b8152600401610a0190615a74565b610d2881614219565b600081815260fd60205260409020546001600160a01b0316610d285760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a01565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133fd82611c9d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061344283611c9d565b9050806001600160a01b0316846001600160a01b0316148061348a57506001600160a01b038082166000908152610100602090815260408083209388168352929052205460ff165b806114605750836001600160a01b03166134a384610adf565b6001600160a01b031614949350505050565b826001600160a01b03166134c882611c9d565b6001600160a01b0316146134ee5760405162461bcd60e51b8152600401610a0190615abf565b6001600160a01b0382166135505760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b61355d8383836001614375565b826001600160a01b031661357082611c9d565b6001600160a01b0316146135965760405162461bcd60e51b8152600401610a0190615abf565b600081815260ff6020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260fe855283862080546000190190559087168086528386208054600101905586865260fd90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020615c57833981519152600080516020615c108339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b1580156136c357600080fd5b505afa1580156136d7573d6000803e3d6000fd5b5050505060008390507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c91906156fa565b6001600160a01b03161461379357604051630f13081760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381f91906156fa565b6001600160a01b031614610ad9576040516324a41b4360e11b815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561387957610c1683614382565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156138d3575060408051601f3d908101601f191682019092526138d091810190615824565b60015b6139365760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a01565b600080516020615bf083398151915281146139a55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a01565b50610c1683838361441e565b60335460ff16156132d75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a01565b805115801590613a1f57508051600090815261012f6020526040902054613a1d82613a99565b145b610d285760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610a01565b6001613a6a8383614443565b6003811115613a7b57613a7b61510b565b1461152557604051630422f25f60e01b815260040160405180910390fd5b600081604051602001613aac9190615815565b60408051601f198184030181529190528051602090910120905080613b135760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f74206265203000000000000000006044820152606401610a01565b919050565b613b2283836144b6565b613b2f600084848461464f565b610c165760405162461bcd60e51b8152600401610a0190615b04565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ad990859061474d565b6000613bb083611c9d565b90506001600160a01b0381163b613bc657505050565b613bd781635ee0c7dd60e01b614822565b613be057505050565b60006001600160a01b038216635ee0c7dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af1158015613c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c709190615b56565b90506001600160e01b03198116635ee0c7dd60e01b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b613cad61483e565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613d00836139f7565b61016083015181158015613d1d57506001600160a01b0381163314155b15613d3b57604051634ace04f960e01b815260040160405180910390fd5b821580613d53575042846101a0015164ffffffffff16115b613d9f5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610a01565b613daa8160026142a2565b8360200151831115613df75760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610a01565b600080841190506000826001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e6291906156fa565b9050613e6f8160036142a2565b8551600090815261012f60205260408120558115613f01576000613e968760000151611c9d565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee790613ec99084908b908b90600401615b73565b600060405180830381600087803b158015613ee357600080fd5b505af1158015613ef7573d6000803e3d6000fd5b5050505050613f60565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613f2d908990600401615815565b600060405180830381600087803b158015613f4757600080fd5b505af1158015613f5b573d6000803e3d6000fd5b505050505b6020860151604051636a448ef160e01b815260048101919091526001600160a01b03841690636a448ef190602401600060405180830381600087803b158015613fa857600080fd5b505af1158015613fbc573d6000803e3d6000fd5b5050505085600001518661016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8760405161400591815260200190565b60405180910390a3841561402457855161401f9086614887565b61402f565b855161402f90614987565b505050505050565b61403f6139b1565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cda3390565b816001600160a01b0316836001600160a01b0316036140d55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a01565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61414e8484846134b5565b61415a8484848461464f565b610ad95760405162461bcd60e51b8152600401610a0190615b04565b606061013080546108e5906155e1565b6060600061419383614a83565b600101905060008167ffffffffffffffff8111156141b3576141b3614f0e565b6040519080825280601f01601f1916602001820160405280156141dd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846141e757509392505050565b6001600160a01b038116614240576040516307a2ee8b60e11b815260040160405180910390fd5b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b60006142ae8383614443565b905060018160038111156142c4576142c461510b565b141580156142e4575060028160038111156142e1576142e161510b565b14155b15610c165760405163d08ef1ff60e01b815260040160405180910390fd5b600054610100900460ff166143295760405162461bcd60e51b8152600401610a0190615a74565b60fb6143358382615883565b5060fc610c168282615883565b600054610100900460ff166143695760405162461bcd60e51b8152600401610a0190615a74565b6033805460ff19169055565b61437d6139b1565b610ad9565b6001600160a01b0381163b6143ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a01565b600080516020615bf083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61442783614b5b565b6000825111806144345750805b15610c1657610ad98383614b9b565b6001600160a01b038216600090815261012e6020526040812082600381111561446e5761446e61510b565b8154610100900460ff1660038111156144895761448961510b565b146144ab57838360405163502c9a5f60e01b8152600401610a019291906159d3565b5460ff169392505050565b6001600160a01b03821661450c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a01565b600081815260fd60205260409020546001600160a01b0316156145715760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b61457f600083836001614375565b600081815260fd60205260409020546001600160a01b0316156145e45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a01565b6001600160a01b038216600081815260fe602090815260408083208054600101905584835260fd90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561474557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614693903390899088908890600401615ba0565b6020604051808303816000875af19250505080156146ce575060408051601f3d908101601f191682019092526146cb91810190615b56565b60015b61472b573d8080156146fc576040519150601f19603f3d011682016040523d82523d6000602084013e614701565b606091505b5080516000036147235760405162461bcd60e51b8152600401610a0190615b04565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611460565b506001611460565b60006147a2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bc09092919063ffffffff16565b90508051600014806147c35750808060200190518101906147c391906159b6565b610c165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a01565b600061482d83614bcf565b801561308457506130848383614c02565b60335460ff166132d75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a01565b600061489283611c9d565b90506001600160a01b0381163b6148a857505050565b6148b981633ece0a8960e01b614822565b6148c257505050565b60006001600160a01b03821663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101879052606481018690526084016020604051808303816000875af115801561492e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149529190615b56565b90506001600160e01b03198116636b140e9f60e11b14610ad957806040516381784a5160e01b8152600401610a0191906159a1565b600061499282611c9d565b90506001600160a01b0381163b6149a7575050565b6149b881633ece0a8960e01b614822565b6149c0575050565b6001600160a01b03811663e8e617b7620249f0336040516001600160e01b031960e085901b1681526001600160a01b0390911660048201523060248201526044810186905260640160206040518083038160008887f193505050508015614a44575060408051601f3d908101601f19168201909252614a4191810190615b56565b60015b610c16576040516001600160a01b038216815282907f6ce8016f81523f240956bca9a698e643d09e84e7d0e931470b1016baf1027bd0906020016119a2565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614ac25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614aee576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614b0c57662386f26fc10000830492506010015b6305f5e1008310614b24576305f5e100830492506008015b6127108310614b3857612710830492506004015b60648310614b4a576064830492506002015b600a83106108d05760010192915050565b614b6481614382565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606130848383604051806060016040528060278152602001615c3060279139614c96565b60606114608484600085614d0e565b6000614be2826301ffc9a760e01b614c02565b80156108d05750614bfb826001600160e01b0319614c02565b1592915050565b6000806301ffc9a760e01b83604051602401614c1e91906159a1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015614c7f575060208210155b8015614c8b5750600081115b979650505050505050565b6060600080856001600160a01b031685604051614cb39190615bd3565b600060405180830381855af49150503d8060008114614cee576040519150601f19603f3d011682016040523d82523d6000602084013e614cf3565b606091505b5091509150614d0486838387614dda565b9695505050505050565b606082471015614d6f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a01565b600080866001600160a01b03168587604051614d8b9190615bd3565b60006040518083038185875af1925050503d8060008114614dc8576040519150601f19603f3d011682016040523d82523d6000602084013e614dcd565b606091505b5091509150614c8b878383875b60608315614e49578251600003614e42576001600160a01b0385163b614e425760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a01565b5081611460565b6114608383815115614e5e5781518083602001fd5b8060405162461bcd60e51b8152600401610a019190614efb565b6001600160e01b031981168114610d2857600080fd5b600060208284031215614ea057600080fd5b813561308481614e78565b60005b83811015614ec6578181015183820152602001614eae565b50506000910152565b60008151808452614ee7816020860160208601614eab565b601f01601f19169290920160200192915050565b6020815260006130846020830184614ecf565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff81118282101715614f4857614f48614f0e565b60405290565b600082601f830112614f5f57600080fd5b813567ffffffffffffffff80821115614f7a57614f7a614f0e565b604051601f8301601f19908116603f01168101908282118183101715614fa257614fa2614f0e565b81604052838152866020858801011115614fbb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610d2857600080fd5b60008060006060848603121561500557600080fd5b833567ffffffffffffffff8082111561501d57600080fd5b61502987838801614f4e565b9450602086013591508082111561503f57600080fd5b5061504c86828701614f4e565b925050604084013561505d81614fdb565b809150509250925092565b60006020828403121561507a57600080fd5b5035919050565b6000806040838503121561509457600080fd5b823561509f81614fdb565b946020939093013593505050565b6000806000606084860312156150c257600080fd5b83356150cd81614fdb565b925060208401356150dd81614fdb565b929592945050506040919091013590565b60006020828403121561510057600080fd5b813561308481614fdb565b634e487b7160e01b600052602160045260246000fd5b60048110610d2857634e487b7160e01b600052602160045260246000fd5b6020810161514c83615121565b91905290565b8035613b1381614fdb565b803564ffffffffff81168114613b1357600080fd5b60006101c0828403121561518557600080fd5b61518d614f24565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016061520b818401615152565b9082015261018061521d83820161515d565b908201526101a061522f83820161515d565b9082015292915050565b80356bffffffffffffffffffffffff81168114613b1357600080fd5b6000806000806103c0858703121561526c57600080fd5b6152768686615172565b9350615286866101c08701615172565b925061038085013561529781614fdb565b91506152a66103a08601615239565b905092959194509250565b600080604083850312156152c457600080fd5b82356152cf81614fdb565b9150602083013567ffffffffffffffff8111156152eb57600080fd5b6152f785828601614f4e565b9150509250929050565b60006020828403121561531357600080fd5b813567ffffffffffffffff81111561532a57600080fd5b61146084828501614f4e565b60048110610d2857600080fd5b6000806040838503121561535657600080fd5b823561536181614fdb565b9150602083013561537181615336565b809150509250929050565b600080600080610220858703121561539357600080fd5b61539d8686615172565b93506101c08501356153ae81614fdb565b92506101e08501356153bf81614fdb565b91506152a66102008601615239565b60006101c082840312156153e157600080fd5b50919050565b60006101c082840312156153fa57600080fd5b61308483836153ce565b6000806101e0838503121561541857600080fd5b61542284846153ce565b946101c0939093013593505050565b6000806020838503121561544457600080fd5b823567ffffffffffffffff8082111561545c57600080fd5b818501915085601f83011261547057600080fd5b81358181111561547f57600080fd5b8660206101c08302850101111561549557600080fd5b60209290920196919550909350505050565b8015158114610d2857600080fd5b600080604083850312156154c857600080fd5b82356154d381614fdb565b91506020830135615371816154a7565b600080600080608085870312156154f957600080fd5b843561550481614fdb565b9350602085013561551481614fdb565b925060408501359150606085013567ffffffffffffffff81111561553757600080fd5b61554387828801614f4e565b91505092959194509250565b6000806040838503121561556257600080fd5b823561556d81614fdb565b915061557b60208401615239565b90509250929050565b6000806040838503121561559757600080fd5b82356155a281614fdb565b9150602083013561537181614fdb565b6000806101e083850312156155c657600080fd5b6155d084846153ce565b91506101c0830135615371816154a7565b600181811c908216806155f557607f821691505b6020821081036153e157634e487b7160e01b600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561570c57600080fd5b815161308481614fdb565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516157a0828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610ad9565b61038081016157de8285615717565b6130846101c0830184615717565b634e487b7160e01b600052601160045260246000fd5b818103818111156108d0576108d06157ec565b6101c081016108d08284615717565b60006020828403121561583657600080fd5b5051919050565b601f821115610c1657600081815260208120601f850160051c810160208610156158645750805b601f850160051c820191505b8181101561402f57828155600101615870565b815167ffffffffffffffff81111561589d5761589d614f0e565b6158b1816158ab84546155e1565b8461583d565b602080601f8311600181146158e657600084156158ce5750858301515b600019600386901b1c1916600185901b17855561402f565b600085815260208120601f198616915b82811015615915578886015182559484019460019091019084016158f6565b50858210156159335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040810161595084615121565b83825261595c83615121565b8260208301529392505050565b60006020828403121561597b57600080fd5b6130848261515d565b60006101c0828403121561599757600080fd5b6130848383615172565b6001600160e01b031991909116815260200190565b6000602082840312156159c857600080fd5b8151613084816154a7565b6001600160a01b03831681526040810161595c83615121565b604081016159f984615121565b9281526020015290565b634e487b7160e01b600052603260045260246000fd5b600060018201615a2b57615a2b6157ec565b5060010190565b808201808211156108d0576108d06157ec565b60008351615a57818460208801614eab565b835190830190615a6b818360208801614eab565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060208284031215615b6857600080fd5b815161308481614e78565b6001600160a01b03841681526102008101615b916020830185615717565b826101e0830152949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614d0490830184614ecf565b60008251615be5818460208701614eab565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212207bec76ac01a477aae48ee4cb156913fb71820f48dcf1320fef3499298e2af87f64736f6c63430008100033",
1773
+ "linkReferences": {},
1774
+ "deployedLinkReferences": {}
1775
+ }