-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRubyUSDT.json
More file actions
4526 lines (4526 loc) · 335 KB
/
RubyUSDT.json
File metadata and controls
4526 lines (4526 loc) · 335 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"contractName": "RubyUSDT",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_transfer",
"type": "address"
},
{
"internalType": "address",
"name": "_redeem",
"type": "address"
},
{
"internalType": "uint256",
"name": "_unit",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "label",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "LogUint256",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"indexed": false,
"internalType": "struct Utils.G1Point[]",
"name": "parties",
"type": "tuple[]"
}
],
"name": "TransferOccurred",
"type": "event"
},
{
"inputs": [],
"name": "MAX",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "balance_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "deposits_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
}
],
"name": "getAccountState",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[2]",
"name": "y_available",
"type": "tuple[2]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[2]",
"name": "y_pending",
"type": "tuple[2]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[]",
"name": "y",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "round",
"type": "uint256"
}
],
"name": "getBalance",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[2][]",
"name": "accounts",
"type": "tuple[2][]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
}
],
"name": "getGuess",
"outputs": [
{
"internalType": "bytes",
"name": "y_guess",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "last_global_update",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "last_roll_over",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mint_count_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ruby_agency",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redeem_fee_denominator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redeem_fee_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redeem_fee_numerator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "c",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "s",
"type": "uint256"
}
],
"name": "register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "yHash",
"type": "bytes32"
}
],
"name": "registered",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "round_base",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "round_len",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_ruby_agency",
"type": "address"
}
],
"name": "setRubyAgency",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "numerator",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "denominator",
"type": "uint256"
}
],
"name": "setRedeemFeeStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_round_base",
"type": "uint256"
}
],
"name": "setRoundBase",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_round_len",
"type": "uint256"
}
],
"name": "setRoundLen",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "numerator",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "denominator",
"type": "uint256"
}
],
"name": "setTransferFeeStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_unit",
"type": "uint256"
}
],
"name": "setUnit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[]",
"name": "C",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "D",
"type": "tuple"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[]",
"name": "y",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "u",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "proof",
"type": "bytes"
}
],
"name": "transfer",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "transfer_fee_denominator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "transfer_fee_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "transfer_fee_numerator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "unit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "users_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "unitAmount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "encGuess",
"type": "bytes"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "unitAmount",
"type": "uint256"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "u",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "proof",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "encGuess",
"type": "bytes"
}
],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_transfer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_redeem\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_unit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"LogUint256\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"parties\",\"type\":\"tuple[]\"}],\"name\":\"TransferOccurred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balance_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposits_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"}],\"name\":\"getAccountState\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[2]\",\"name\":\"y_available\",\"type\":\"tuple[2]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[2]\",\"name\":\"y_pending\",\"type\":\"tuple[2]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"y\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"getBalance\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[2][]\",\"name\":\"accounts\",\"type\":\"tuple[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"}],\"name\":\"getGuess\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"y_guess\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"last_global_update\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"last_roll_over\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"unitAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encGuess\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint_count_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ruby_agency\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"unitAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"u\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encGuess\",\"type\":\"bytes\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeem_fee_denominator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeem_fee_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeem_fee_numerator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"c\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"yHash\",\"type\":\"bytes32\"}],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"round_base\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"round_len\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_ruby_agency\",\"type\":\"address\"}],\"name\":\"setRubyAgency\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"setRedeemFeeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_round_base\",\"type\":\"uint256\"}],\"name\":\"setRoundBase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_round_len\",\"type\":\"uint256\"}],\"name\":\"setRoundLen\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"setTransferFeeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unit\",\"type\":\"uint256\"}],\"name\":\"setUnit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"C\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"D\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"y\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"u\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfer_fee_denominator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfer_fee_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfer_fee_numerator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"users_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalance((bytes32,bytes32)[],uint256)\":{\"notice\":\"Get the current balances of accounts. If the given `round` is larger than the last roll over round, the returned balances will include pending transfers. \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyUSDT.sol\":\"RubyUSDT\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyBase.sol\":{\"keccak256\":\"0x85c785db8df1ed07c39c59e84e460ccac813201c3da07d4c96b510cf4e6270b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://469eee2a147da7d1582348ee01d6226d707b6b973aad1afa424cf1538a0ad4cc\",\"dweb:/ipfs/QmP1gtKJpJGyVdbsH1UfgmxxnBERvnWnDvTebtLzkUH75M\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyIP.sol\":{\"keccak256\":\"0x33b81084c94dd73a4c7f352d5befbdc9f0d1919f64ea07a0a850822bf763d172\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8753c2eebb59cf2092b1a93452df44c8cc02f7525baf3d57cdc0d665b4bdfdd6\",\"dweb:/ipfs/QmZiCqUVFkwpNa9FnM1otcihvL87yE57HnVFNriBofek9p\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyRedeem.sol\":{\"keccak256\":\"0xca172570f3dbb36a4f598f7f025029dd608f2e1c5c83d01533ee9c7d5ce3f18c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0d65f2203e8ce1d573e53e4f5d41077dad528d0589bc742c9e03c3fed2636de\",\"dweb:/ipfs/QmauBc9ZDzbgBh5YDrmDYc5xNmXo5vYMNdQMGqmiKJHFL3\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyTransfer.sol\":{\"keccak256\":\"0x1438402e0abf46c79402027bfa07922137c48609e57b390930d4ef74db686dbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44e05c86ae8dde145e826cdae4bc48bbe14ec42711a75d69f1b6c1adc667fae4\",\"dweb:/ipfs/QmdHpjeKwQozwws1CrRbHbpwxLPk5zifJXPWZiz4LeMHdv\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyUSDT.sol\":{\"keccak256\":\"0x1641d47ab2dd816297aaf56e9727557a48ff7776fef494090ae2c802de486891\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4b5ce22873ee4cdd3a87a4ca5807c0fa6f21a0886bb0660b07b4440f18bd5a6\",\"dweb:/ipfs/QmYwZNBDu7EYDn4LRdGJNSshsbYnyod4EkkbuCBYK1S1HD\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/Utils.sol\":{\"keccak256\":\"0xb7d2263531d81713ab57eb8d697f8305eaa16b47d2b165891f8240c13eaac776\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc5e29b22fb745da965cd3e23be35cc55b45ed5f83e9639a39a6e51dc2683cf\",\"dweb:/ipfs/QmTNNC4oNJ3ew5X3iDK8XNdKwSwSvqzq1P2FcJmaznWV4T\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]}},\"version\":1}",
"bytecode": "0x60806040526018600155600060025560016004556064600555600160065560056007556000600a556000600b556000600c556000600d556000600e556000600f5560006014553480156200005257600080fd5b5060405162005eca38038062005eca8339818101604052810190620000789190620001c1565b82828233600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060008190555050505083601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200029f565b600081519050620001a4816200026b565b92915050565b600081519050620001bb8162000285565b92915050565b60008060008060808587031215620001d857600080fd5b6000620001e88782880162000193565b9450506020620001fb8782880162000193565b93505060406200020e8782880162000193565b92505060606200022187828801620001aa565b91505092959194509250565b60006200023a8262000241565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000276816200022d565b81146200028257600080fd5b50565b620002908162000261565b81146200029c57600080fd5b50565b615c1b80620002af6000396000f3fe6080604052600436106101d85760003560e01c806384f9b07a11610102578063b5753dee11610095578063dcfa1e5d11610064578063dcfa1e5d146106b1578063ddf911da146106dc578063eff4d17814610707578063f487e95214610723576101d8565b8063b5753dee14610607578063d11fa8c014610632578063d49d51811461065b578063d90d3a5814610686576101d8565b8063a568ce51116100d1578063a568ce5114610538578063a9b05a5614610576578063aae07890146105b3578063b47e51d7146105dc576101d8565b806384f9b07a1461048e5780638ad747e0146104b9578063907af6c0146104e45780639b0d85d31461050f576101d8565b8063566a8e621161017a57806375236e3f1161014957806375236e3f146103e6578063767b7d85146104115780637715a74c1461043a5780637b5b3b9f14610465576101d8565b8063566a8e621461033c57806362c4d3a31461036757806363bb012c146103925780637207f20e146103bd576101d8565b80632a6b024b116101b65780632a6b024b146102705780634301a344146102995780634ad729e0146102d65780635524d548146102ff576101d8565b80630221c717146101dd57806327d084e7146102085780632811112014610245575b600080fd5b3480156101e957600080fd5b506101f261074c565b6040516101ff9190615868565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613d32565b610752565b60405161023c9190615328565b60405180910390f35b34801561025157600080fd5b5061025a6109ff565b6040516102679190615868565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613e01565b610a05565b005b3480156102a557600080fd5b506102c060048036038101906102bb9190613daf565b610a72565b6040516102cd9190615868565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190613e68565b610a8a565b005b34801561030b57600080fd5b5061032660048036038101906103219190613daf565b610b94565b6040516103339190615422565b60405180910390f35b34801561034857600080fd5b50610351610da2565b60405161035e9190615868565b60405180910390f35b34801561037357600080fd5b5061037c610da8565b6040516103899190615868565b60405180910390f35b34801561039e57600080fd5b506103a7610dae565b6040516103b49190615868565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190614074565b610db4565b005b3480156103f257600080fd5b506103fb610e56565b6040516104089190615868565b60405180910390f35b34801561041d57600080fd5b506104386004803603810190610433919061404b565b610e5c565b005b34801561044657600080fd5b5061044f610ef6565b60405161045c9190615276565b60405180910390f35b34801561047157600080fd5b5061048c6004803603810190610487919061404b565b610f1c565b005b34801561049a57600080fd5b506104a3610fb6565b6040516104b09190615868565b60405180910390f35b3480156104c557600080fd5b506104ce610fbc565b6040516104db9190615868565b60405180910390f35b3480156104f057600080fd5b506104f9610fc2565b6040516105069190615868565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613f0f565b610fc8565b005b34801561054457600080fd5b5061055f600480360381019061055a9190613dd8565b611199565b60405161056d92919061534a565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190613dd8565b6112b2565b6040516105aa919061543d565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061404b565b611393565b005b3480156105e857600080fd5b506105f161142d565b6040516105fe9190615868565b60405180910390f35b34801561061357600080fd5b5061061c611433565b6040516106299190615868565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190613c4a565b611439565b005b34801561066757600080fd5b5061067061150d565b60405161067d9190615868565b60405180910390f35b34801561069257600080fd5b5061069b611515565b6040516106a89190615868565b60405180910390f35b3480156106bd57600080fd5b506106c661151b565b6040516106d39190615868565b60405180910390f35b3480156106e857600080fd5b506106f1611521565b6040516106fe9190615868565b60405180910390f35b610721600480360381019061071c9190613c73565b611527565b005b34801561072f57600080fd5b5061074a60048036038101906107459190614074565b611dab565b005b60015481565b60606000835190508067ffffffffffffffff8111801561077157600080fd5b506040519080825280602002602001820160405280156107ab57816020015b610798612e9c565b8152602001906001900390816107905790505b50915060005b818110156109f75760008582815181106107c757fe5b60200260200101516040516020016107df9190615781565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b8282101561085d578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610821565b5050505084838151811061086d57fe5b602002602001018190525084601260008381526020019081526020016000205410156109e95761089b612e9c565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156109015783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906108c5565b50505050905061094f8160006002811061091757fe5b602002015186858151811061092857fe5b602002602001015160006002811061093c57fe5b6020020151611e4d90919063ffffffff16565b85848151811061095b57fe5b602002602001015160006002811061096f57fe5b60200201819052506109bf8160016002811061098757fe5b602002015186858151811061099857fe5b60200260200101516001600281106109ac57fe5b6020020151611e4d90919063ffffffff16565b8584815181106109cb57fe5b60200260200101516001600281106109df57fe5b6020020181905250505b5080806001019150506107b1565b505092915050565b600f5481565b610a10838383611e91565b6000610a1b8361207d565b9050610a6c333083601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120df909392919063ffffffff16565b50505050565b60126020528060005260406000206000915090505481565b6000610a958561207d565b90506000600554600454830281610aa857fe5b049050610ab88787878787612168565b6000811115610b3c57610b30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661277c9092919063ffffffff16565b80600c5401600c819055505b610b8b33828403601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661277c9092919063ffffffff16565b50505050505050565b6000610b9e612ec9565b60405180604001604052806000801b81526020016000801b8152509050610bc3612ee9565b604051806040016040528060106000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610c34578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610bf8565b50505050815260200160116000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610ca3578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610c67565b505050508152509050610ce18282600060028110610cbd57fe5b6020020151600060028110610cce57fe5b602002015161280290919063ffffffff16565b8015610d1e5750610d1d8282600060028110610cf957fe5b6020020151600160028110610d0a57fe5b602002015161280290919063ffffffff16565b5b8015610d5b5750610d5a8282600160028110610d3657fe5b6020020151600060028110610d4757fe5b602002015161280290919063ffffffff16565b5b8015610d985750610d978282600160028110610d7357fe5b6020020151600160028110610d8457fe5b602002015161280290919063ffffffff16565b5b1592505050919050565b60145481565b600e5481565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b90615661565b60405180910390fd5b81600681905550806007819055505050565b600d5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906156c1565b60405180910390fd5b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390615501565b60405180910390fd5b8060028190555050565b600b5481565b60025481565b60005481565b610fd0612ec9565b611016610fee610fdf8561282a565b8661285690919063ffffffff16565b61100884610ffa61288f565b61285690919063ffffffff16565b611e4d90919063ffffffff16565b90506000611050308684604051602001611032939291906152c8565b6040516020818303038152906040528051906020012060001c6128f7565b9050838114611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90615601565b60405180910390fd5b6000856040516020016110a79190615781565b6040516020818303038152906040528051906020012090506110c881610b94565b15611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90615541565b60405180910390fd5b856011600083815260200190815260200160002060006002811061112857fe5b60020201600082015181600001556020820151816001015590505061114b61288f565b6011600083815260200190815260200160002060016002811061116a57fe5b6002020160008201518160000155602082015181600101559050506001600b5401600b81905550505050505050565b6111a1612e9c565b6111a9612e9c565b6000836040516020016111bc9190615781565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b8282101561123a5783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906111fe565b50505050925060116000828152602001908152602001600020600280602002604051908101604052809291906000905b828210156112a657838260020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061126a565b50505050915050915091565b60606000826040516020016112c79190615781565b604051602081830303815290604052805190602001209050601560008281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113865780601f1061135b57610100808354040283529160200191611386565b820191906000526020600020905b81548152906001019060200180831161136957829003601f168201915b5050505050915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90615621565b60405180910390fd5b8060008190555050565b600c5481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090615521565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b63ffffffff81565b60065481565b60055481565b60045481565b60005a905060008451905060608167ffffffffffffffff8111801561154b57600080fd5b5060405190808252806020026020018201604052801561158557816020015b611572612ec9565b81526020019060019003908161156a5790505b50905060608267ffffffffffffffff811180156115a157600080fd5b506040519080825280602002602001820160405280156115db57816020015b6115c8612ec9565b8152602001906001900390816115c05790505b50905082895114611621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611618906154a1565b60405180910390fd5b60005b8381101561190257600088828151811061163a57fe5b60200260200101516040516020016116529190615781565b60405160208183030381529060405280519060200120905061167381610b94565b6116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a9906155e1565b60405180910390fd5b6116bb8161292a565b6116c3612e9c565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156117295783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906116ed565b5050505090506117668c848151811061173e57fe5b60200260200101518260006002811061175357fe5b6020020151611e4d90919063ffffffff16565b6011600084815260200190815260200160002060006002811061178557fe5b6002020160008201518160000155602082015181600101559050506117c48b826001600281106117b157fe5b6020020151611e4d90919063ffffffff16565b601160008481526020019081526020016000206001600281106117e357fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b82821015611864578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611828565b5050505090506118a18c848151811061187957fe5b60200260200101518260006002811061188e57fe5b6020020151611e4d90919063ffffffff16565b8584815181106118ad57fe5b60200260200101819052506118dc8b826001600281106118c957fe5b6020020151611e4d90919063ffffffff16565b8484815181106118e857fe5b602002602001018190525050508080600101915050611624565b506000866040516020016119169190615781565b60405160208183030381529060405280519060200120905060005b6013805490508110156119a557816013828154811061194c57fe5b90600052602060002001541415611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90615761565b60405180910390fd5b8080600101915050611931565b5060138190806001815401808255809150506001900390600052602060002001600090919091909150556119d7612f16565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639471ac0a85858e8e8e6014548f6040518863ffffffff1660e01b8152600401611a409796959493929190615396565b60006040518083038186803b158015611a5857600080fd5b505afa158015611a6c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a95919061400a565b9050611a9f612f5f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9896040518263ffffffff1660e01b8152600401611afa919061543d565b60006040518083038186803b158015611b1257600080fd5b505afa158015611b26573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b4f9190613f9f565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a529878e83836040518363ffffffff1660e01b8152600401611bae929190615831565b60206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613d86565b611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906154c1565b60405180910390fd5b60005a8803905060003a600754600654840281611c5657fe5b040290506000811115611d1b5780341015611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90615561565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d0e573d6000803e3d6000fd5b5080600d5401600d819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc8234039081150290604051600060405180830381858888f19350505050158015611d63573d6000803e3d6000fd5b507f9b814ae8a45a4c40d4c60ffa92e0c4b76dec41407cb28b43df9daffa3685f9ac8c604051611d939190615374565b60405180910390a15050505050505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e32906156a1565b60405180910390fd5b81600481905550806005819055505050565b611e55612ec9565b6040518351815260208401516020820152825160408201526020830151606082015260408260808360065afa611e8a57600080fd5b5092915050565b63ffffffff8211158015611ead575063ffffffff82600a540111155b611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee3906154e1565b60405180910390fd5b81600a6000828254019250508190555081600e600082825401925050819055506001600f60008282540192505081905550600083604051602001611f309190615781565b604051602081830303815290604052805190602001209050611f5181610b94565b611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8790615581565b60405180910390fd5b611f998161292a565b611fa1612ec9565b60116000838152602001908152602001600020600060028110611fc057fe5b6002020160405180604001604052908160008201548152602001600182015481525050905061201161200285611ff461288f565b61285690919063ffffffff16565b82611e4d90919063ffffffff16565b9050806011600084815260200190815260200160002060006002811061203357fe5b6002020160008201518160000155602082015181600101559050508260156000848152602001908152602001600020908051906020019061207592919061303f565b505050505050565b600081600011158015612094575063ffffffff8211155b6120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca90615701565b60405180910390fd5b60005482029050919050565b612162846323b872dd60e01b85858560405160240161210093929190615291565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c2e565b50505050565b83600a5410156121ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a490615481565b60405180910390fd5b83600a600082825403925050819055506000856040516020016121d09190615781565b6040516020818303038152906040528051906020012090506121f181610b94565b612230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612227906155c1565b60405180910390fd5b6122398161292a565b612241612e9c565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156122a757838260020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061226b565b5050505090506122f26122d26122bc8861282a565b6122c461288f565b61285690919063ffffffff16565b826000600281106122df57fe5b6020020151611e4d90919063ffffffff16565b6011600084815260200190815260200160002060006002811061231157fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b82821015612392578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612356565b5050505090506123dd6123bd6123a78861282a565b6123af61288f565b61285690919063ffffffff16565b826000600281106123ca57fe5b6020020151611e4d90919063ffffffff16565b816000600281106123ea57fe5b60200201819052506000856040516020016124059190615781565b60405160208183030381529060405280519060200120905060005b60138054905081101561249457816013828154811061243b57fe5b90600052602060002001541415612487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247e90615721565b60405180910390fd5b8080600101915050612420565b506013819080600181540180825580915050600190039060005260206000200160009091909190915055836015600085815260200190815260200160002090805190602001906124e592919061303f565b506124ee6130bf565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bba28e3c8460006002811061253957fe5b60200201518560016002811061254b57fe5b60200201518c6014548c336040518763ffffffff1660e01b81526004016125779695949392919061579c565b6101406040518083038186803b15801561259057600080fd5b505afa1580156125a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c89190613fe0565b90506125d2613123565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9886040518263ffffffff1660e01b815260040161262d919061543d565b60006040518083038186803b15801561264557600080fd5b505afa158015612659573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126829190613f5e565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d039751f83836040518363ffffffff1660e01b81526004016126e19291906157ff565b60206040518083038186803b1580156126f957600080fd5b505afa15801561270d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127319190613d86565b612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276790615641565b60405180910390fd5b50505050505050505050565b6127fd8363a9059cbb60e01b848460405160240161279b9291906152ff565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c2e565b505050565b600081600001518360000151148015612822575081602001518360200151145b905092915050565b6000817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001039050919050565b61285e612ec9565b604051835181526020840151602082015282604082015260408260608360075afa61288857600080fd5b5092915050565b612897612ec9565b60405180604001604052807f077da99d806abd13c9f15ece5398525119d11e11e9836b2ee7d23f6159ad87d460001b81526020017f01485efa927f2ad41bff567eec88f32fb0a0f706588b4e41a8d587d008b7f87560001b815250905090565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828161292257fe5b069050919050565b600080600254141561294957600154438161294157fe5b0490506129a3565b6001600254141561296757600154428161295f57fe5b0490506129a2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299990615681565b60405180910390fd5b5b8060126000848152602001908152602001600020541015612c0a576129c6612ee9565b604051806040016040528060106000868152602001908152602001600020600280602002604051908101604052809291906000905b82821015612a375783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906129fb565b50505050815260200160116000868152602001908152602001600020600280602002604051908101604052809291906000905b82821015612aa6578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612a6a565b505050508152509050612b0681600160028110612abf57fe5b6020020151600060028110612ad057fe5b602002015182600060028110612ae257fe5b6020020151600060028110612af357fe5b6020020151611e4d90919063ffffffff16565b60106000858152602001908152602001600020600060028110612b2557fe5b600202016000820151816000015560208201518160010155905050612b9781600160028110612b5057fe5b6020020151600160028110612b6157fe5b602002015182600060028110612b7357fe5b6020020151600160028110612b8457fe5b6020020151611e4d90919063ffffffff16565b60106000858152602001908152602001600020600160028110612bb657fe5b600202016000820151816000015560208201518160010155905050601160008481526020019081526020016000206000612bf0919061318e565b816012600085815260200190815260200160002081905550505b806014541015612c2a578060148190555060136000612c2991906131b9565b5b5050565b6060612c90826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612cf59092919063ffffffff16565b9050600081511115612cf05780806020019051810190612cb09190613d86565b612cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce690615741565b60405180910390fd5b5b505050565b6060612d048484600085612d0d565b90509392505050565b606082471015612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d49906155a1565b60405180910390fd5b612d5b85612e22565b612d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d91906156e1565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051612dc4919061525f565b60006040518083038185875af1925050503d8060008114612e01576040519150601f19603f3d011682016040523d82523d6000602084013e612e06565b606091505b5091509150612e16828286612e35565b92505050949350505050565b600080823b905060008111915050919050565b60608315612e4557829050612e95565b600083511115612e585782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8c919061545f565b60405180910390fd5b9392505050565b60405180604001604052806002905b612eb3612ec9565b815260200190600190039081612eab5790505090565b604051806040016040528060008019168152602001600080191681525090565b60405180604001604052806002905b612f00612e9c565b815260200190600190039081612ef85790505090565b6040518060e00160405280606081526020016060815260200160608152602001612f3e612ec9565b81526020016060815260200160008152602001612f59612ec9565b81525090565b604051806103200160405280612f73612ec9565b8152602001612f80612ec9565b8152602001612f8d612ec9565b8152602001612f9a612ec9565b8152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001612ffb612e9c565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016130396131da565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061308057805160ff19168380011785556130ae565b828001600101855582156130ae579182015b828111156130ad578251825591602001919060010190613092565b5b5090506130bb9190613202565b5090565b6040518060c001604052806130d2612ec9565b81526020016130df612ec9565b81526020016130ec612ec9565b815260200160008152602001613100612ec9565b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806101400160405280613137612ec9565b8152602001613144612ec9565b8152602001613151612e9c565b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016131886131da565b81525090565b5060008082016000905560018201600090555060020160008082016000905560018201600090555050565b50805460008255906000526020600020908101906131d7919061321f565b50565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b5b8082111561321b576000816000905550600101613203565b5090565b5b80821115613238576000816000905550600101613220565b5090565b60008151905061324b81615b72565b92915050565b60008135905061326081615b89565b92915050565b600082601f83011261327757600080fd5b600261328a613285826158b0565b615883565b915081838560408402820111156132a057600080fd5b60005b838110156132d057816132b68882613542565b8452602084019350604083019250506001810190506132a3565b5050505092915050565b600082601f8301126132eb57600080fd5b81356132fe6132f9826158d2565b615883565b9150818183526020840193506020810190508385604084028201111561332357600080fd5b60005b83811015613353578161333988826134f6565b845260208401935060408301925050600181019050613326565b5050505092915050565b600082601f83011261336e57600080fd5b815161338161337c826158d2565b615883565b915081818352602084019350602081019050838560408402820111156133a657600080fd5b60005b838110156133d657816133bc8882613542565b8452602084019350604083019250506001810190506133a9565b5050505092915050565b600082601f8301126133f157600080fd5b81516134046133ff826158fa565b615883565b9150818183526020840193506020810190508385602084028201111561342957600080fd5b60005b83811015613459578161343f8882613c35565b84526020840193506020830192505060018101905061342c565b5050505092915050565b60008151905061347281615ba0565b92915050565b60008135905061348781615bb7565b92915050565b60008151905061349c81615bb7565b92915050565b600082601f8301126134b357600080fd5b81356134c66134c182615922565b615883565b915080825260208301602083018583830111156134e257600080fd5b6134ed838284615b1f565b50505092915050565b60006040828403121561350857600080fd5b6135126040615883565b9050600061352284828501613478565b600083015250602061353684828501613478565b60208301525092915050565b60006040828403121561355457600080fd5b61355e6040615883565b9050600061356e8482850161348d565b60008301525060206135828482850161348d565b60208301525092915050565b6000608082840312156135a057600080fd5b6135aa6080615883565b9050600082015167ffffffffffffffff8111156135c657600080fd5b6135d28482850161335d565b600083015250602082015167ffffffffffffffff8111156135f257600080fd5b6135fe8482850161335d565b602083015250604061361284828501613c35565b604083015250606061362684828501613c35565b60608301525092915050565b60006101e0828403121561364557600080fd5b613650610140615883565b9050600061366084828501613542565b600083015250604061367484828501613542565b602083015250608061368884828501613266565b60408301525061010061369d84828501613c35565b6060830152506101206136b284828501613c35565b6080830152506101406136c784828501613c35565b60a0830152506101606136dc84828501613c35565b60c0830152506101806136f184828501613c35565b60e0830152506101a061370684828501613c35565b610100830152506101c082015167ffffffffffffffff81111561372857600080fd5b6137348482850161358e565b6101208301525092915050565b6000610400828403121561375457600080fd5b61375f610320615883565b9050600061376f84828501613542565b600083015250604061378384828501613542565b602083015250608061379784828501613542565b60408301525060c06137ab84828501613542565b60608301525061010082015167ffffffffffffffff8111156137cc57600080fd5b6137d88482850161335d565b60808301525061012082015167ffffffffffffffff8111156137f957600080fd5b6138058482850161335d565b60a08301525061014082015167ffffffffffffffff81111561382657600080fd5b6138328482850161335d565b60c08301525061016082015167ffffffffffffffff81111561385357600080fd5b61385f8482850161335d565b60e08301525061018082015167ffffffffffffffff81111561388057600080fd5b61388c8482850161335d565b610100830152506101a082015167ffffffffffffffff8111156138ae57600080fd5b6138ba8482850161335d565b610120830152506101c082015167ffffffffffffffff8111156138dc57600080fd5b6138e88482850161335d565b610140830152506101e082015167ffffffffffffffff81111561390a57600080fd5b6139168482850161335d565b6101608301525061020082015167ffffffffffffffff81111561393857600080fd5b613944848285016133e0565b6101808301525061022061395a84828501613c35565b6101a08301525061024061397084828501613c35565b6101c08301525061026061398684828501613c35565b6101e08301525061028061399c84828501613266565b610200830152506103006139b284828501613c35565b610220830152506103206139c884828501613c35565b610240830152506103406139de84828501613c35565b610260830152506103606139f484828501613c35565b61028083015250610380613a0a84828501613c35565b6102a0830152506103a0613a2084828501613c35565b6102c0830152506103c0613a3684828501613c35565b6102e0830152506103e082015167ffffffffffffffff811115613a5857600080fd5b613a648482850161358e565b6103008301525092915050565b60006101408284031215613a8457600080fd5b613a8e60c0615883565b90506000613a9e84828501613542565b6000830152506040613ab284828501613542565b6020830152506080613ac684828501613542565b60408301525060c0613ada84828501613c35565b60608301525060e0613aee84828501613542565b608083015250610120613b038482850161323c565b60a08301525092915050565b60006101208284031215613b2257600080fd5b613b2c60e0615883565b9050600082015167ffffffffffffffff811115613b4857600080fd5b613b548482850161335d565b600083015250602082015167ffffffffffffffff811115613b7457600080fd5b613b808482850161335d565b602083015250604082015167ffffffffffffffff811115613ba057600080fd5b613bac8482850161335d565b6040830152506060613bc084828501613542565b60608301525060a082015167ffffffffffffffff811115613be057600080fd5b613bec8482850161335d565b60808301525060c0613c0084828501613c35565b60a08301525060e0613c1484828501613542565b60c08301525092915050565b600081359050613c2f81615bce565b92915050565b600081519050613c4481615bce565b92915050565b600060208284031215613c5c57600080fd5b6000613c6a84828501613251565b91505092915050565b600080600080600060e08688031215613c8b57600080fd5b600086013567ffffffffffffffff811115613ca557600080fd5b613cb1888289016132da565b9550506020613cc2888289016134f6565b945050606086013567ffffffffffffffff811115613cdf57600080fd5b613ceb888289016132da565b9350506080613cfc888289016134f6565b92505060c086013567ffffffffffffffff811115613d1957600080fd5b613d25888289016134a2565b9150509295509295909350565b60008060408385031215613d4557600080fd5b600083013567ffffffffffffffff811115613d5f57600080fd5b613d6b858286016132da565b9250506020613d7c85828601613c20565b9150509250929050565b600060208284031215613d9857600080fd5b6000613da684828501613463565b91505092915050565b600060208284031215613dc157600080fd5b6000613dcf84828501613478565b91505092915050565b600060408284031215613dea57600080fd5b6000613df8848285016134f6565b91505092915050565b600080600060808486031215613e1657600080fd5b6000613e24868287016134f6565b9350506040613e3586828701613c20565b925050606084013567ffffffffffffffff811115613e5257600080fd5b613e5e868287016134a2565b9150509250925092565b600080600080600060e08688031215613e8057600080fd5b6000613e8e888289016134f6565b9550506040613e9f88828901613c20565b9450506060613eb0888289016134f6565b93505060a086013567ffffffffffffffff811115613ecd57600080fd5b613ed9888289016134a2565b92505060c086013567ffffffffffffffff811115613ef657600080fd5b613f02888289016134a2565b9150509295509295909350565b600080600060808486031215613f2457600080fd5b6000613f32868287016134f6565b9350506040613f4386828701613c20565b9250506060613f5486828701613c20565b9150509250925092565b600060208284031215613f7057600080fd5b600082015167ffffffffffffffff811115613f8a57600080fd5b613f9684828501613632565b91505092915050565b600060208284031215613fb157600080fd5b600082015167ffffffffffffffff811115613fcb57600080fd5b613fd784828501613741565b91505092915050565b60006101408284031215613ff357600080fd5b600061400184828501613a71565b91505092915050565b60006020828403121561401c57600080fd5b600082015167ffffffffffffffff81111561403657600080fd5b61404284828501613b0f565b91505092915050565b60006020828403121561405d57600080fd5b600061406b84828501613c20565b91505092915050565b6000806040838503121561408757600080fd5b600061409585828601613c20565b92505060206140a685828601613c20565b9150509250929050565b60006140bc8383614192565b60808301905092915050565b60006140d48383614d13565b60408301905092915050565b60006140ec8383615241565b60208301905092915050565b61410181615ae9565b82525050565b61411081615a97565b82525050565b61411f81615a85565b82525050565b61412e81615a85565b82525050565b600061413f82615988565b61414981856159fe565b93506141548361594e565b8060005b8381101561418557815161416c88826140b0565b9750614177836159ca565b925050600181019050614158565b5085935050505092915050565b61419b81615993565b6141a58184615a0f565b92506141b08261595e565b8060005b838110156141e15781516141c887826140c8565b96506141d3836159d7565b9250506001810190506141b4565b505050505050565b6141f281615993565b6141fc8184615a1a565b92506142078261595e565b8060005b8381101561423857815161421f87826140c8565b965061422a836159d7565b92505060018101905061420b565b505050505050565b600061424b8261599e565b6142558185615a25565b935061426083615968565b8060005b8381101561429157815161427888826140c8565b9750614283836159e4565b925050600181019050614264565b5085935050505092915050565b60006142a98261599e565b6142b38185615a36565b93506142be83615968565b8060005b838110156142ef5781516142d688826140c8565b97506142e1836159e4565b9250506001810190506142c2565b5085935050505092915050565b6000614307826159a9565b6143118185615a47565b935061431c83615978565b8060005b8381101561434d57815161433488826140e0565b975061433f836159f1565b925050600181019050614320565b5085935050505092915050565b61436381615aa9565b82525050565b61437281615ab5565b82525050565b6000614383826159b4565b61438d8185615a58565b935061439d818560208601615b2e565b6143a681615b61565b840191505092915050565b60006143bc826159b4565b6143c68185615a69565b93506143d6818560208601615b2e565b80840191505092915050565b60006143ed826159bf565b6143f78185615a74565b9350614407818560208601615b2e565b61441081615b61565b840191505092915050565b6000614428602c83615a74565b91507f5b52617a652072656465656d5d204661696c65643a20496e76616c696420726560008301527f6465656d20616d6f756e742e00000000000000000000000000000000000000006020830152604082019050919050565b600061448e602c83615a74565b91507f5b52617a65207472616e736665725d20496e707574206172726179206c656e6760008301527f7468206d69736d617463682100000000000000000000000000000000000000006020830152604082019050919050565b60006144f4602483615a74565b91507f5b52617a65207472616e736665725d204661696c65643a20766572696669636160008301527f74696f6e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061455a603483615a74565b91507f5b52617a65206d696e745d204d696e742070757368657320636f6e747261637460008301527f2070617374206d6178696d756d2076616c75652e0000000000000000000000006020830152604082019050919050565b60006145c0603483615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e6420626173652e0000000000000000000000006020830152604082019050919050565b6000614626603083615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765206167656e63792e000000000000000000000000000000006020830152604082019050919050565b600061468c601b83615a74565b91507f4163636f756e7420616c726561647920726567697374657265642100000000006000830152602082019050919050565b60006146cc604283615a74565b91507f5b52617a65207472616e736665725d204e6f7420656e6f75676820666565207360008301527f656e74207769746820746865207472616e73666572207472616e73616374696f60208301527f6e2e0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614758602783615a74565b91507f5b52617a65206d696e745d204163636f756e74206e6f7420796574207265676960008301527f7374657265642e000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006147be602683615a74565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614824602983615a74565b91507f5b52617a652072656465656d5d204163636f756e74206e6f742079657420726560008301527f67697374657265642e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061488a602b83615a74565b91507f5b52617a65207472616e736665725d204163636f756e74206e6f74207965742060008301527f726567697374657265642e0000000000000000000000000000000000000000006020830152604082019050919050565b60006148f0601f83615a74565b91507f496e76616c696420726567697374726174696f6e207369676e617475726521006000830152602082019050919050565b6000614930602e83615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520756e69742e0000000000000000000000000000000000006020830152604082019050919050565b6000614996602383615a74565b91507f5b52617a652072656465656d5d204661696c65643a207665726966696361746960008301527f6f6e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006149fc603f83615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765207472616e73666572206665652073747261746567792e006020830152604082019050919050565b6000614a62601383615a74565b91507f496e76616c696420726f756e6420626173652e000000000000000000000000006000830152602082019050919050565b6000614aa2603d83615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e67652072656465656d206665652073747261746567792e0000006020830152604082019050919050565b6000614b08603683615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e64206c656e6774682e000000000000000000006020830152604082019050919050565b6000614b6e601d83615a74565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000614bae601383615a74565b91507f416d6f756e74206f7574206f662072616e6765000000000000000000000000006000830152602082019050919050565b6000614bee602183615a74565b91507f5b52617a652072656465656d5d204e6f6e636520616c7265616479207365656e60008301527f21000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614c54602a83615a74565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000614cba602383615a74565b91507f5b52617a65207472616e736665725d204e6f6e636520616c726561647920736560008301527f656e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151614d296000850182614369565b506020820151614d3c6020850182614369565b50505050565b604082016000820151614d586000850182614369565b506020820151614d6b6020850182614369565b50505050565b60006080830160008301518482036000860152614d8e8282614240565b91505060208301518482036020860152614da88282614240565b9150506040830151614dbd6040860182615241565b506060830151614dd06060860182615241565b508091505092915050565b60006101e083016000830151614df46000860182614d13565b506020830151614e076040860182614d13565b506040830151614e1a6080860182614192565b506060830151614e2e610100860182615241565b506080830151614e42610120860182615241565b5060a0830151614e56610140860182615241565b5060c0830151614e6a610160860182615241565b5060e0830151614e7e610180860182615241565b50610100830151614e936101a0860182615241565b506101208301518482036101c0860152614ead8282614d71565b9150508091505092915050565b600061040083016000830151614ed36000860182614d13565b506020830151614ee66040860182614d13565b506040830151614ef96080860182614d13565b506060830151614f0c60c0860182614d13565b506080830151848203610100860152614f258282614240565b91505060a0830151848203610120860152614f408282614240565b91505060c0830151848203610140860152614f5b8282614240565b91505060e0830151848203610160860152614f768282614240565b915050610100830151848203610180860152614f928282614240565b9150506101208301518482036101a0860152614fae8282614240565b9150506101408301518482036101c0860152614fca8282614240565b9150506101608301518482036101e0860152614fe68282614240565b91505061018083015184820361020086015261500282826142fc565b9150506101a0830151615019610220860182615241565b506101c083015161502e610240860182615241565b506101e0830151615043610260860182615241565b50610200830151615058610280860182614192565b5061022083015161506d610300860182615241565b50610240830151615082610320860182615241565b50610260830151615097610340860182615241565b506102808301516150ac610360860182615241565b506102a08301516150c1610380860182615241565b506102c08301516150d66103a0860182615241565b506102e08301516150eb6103c0860182615241565b506103008301518482036103e08601526151058282614d71565b9150508091505092915050565b610140820160008201516151296000850182614d13565b50602082015161513c6040850182614d13565b50604082015161514f6080850182614d13565b50606082015161516260c0850182615241565b50608082015161517560e0850182614d13565b5060a0820151615189610120850182614116565b50505050565b60006101208301600083015184820360008601526151ad8282614240565b915050602083015184820360208601526151c78282614240565b915050604083015184820360408601526151e18282614240565b91505060608301516151f66060860182614d13565b50608083015184820360a086015261520e8282614240565b91505060a083015161522360c0860182615241565b5060c083015161523660e0860182614d13565b508091505092915050565b61524a81615adf565b82525050565b61525981615adf565b82525050565b600061526b82846143b1565b915081905092915050565b600060208201905061528b6000830184614107565b92915050565b60006060820190506152a66000830186614125565b6152b36020830185614125565b6152c06040830184615250565b949350505050565b600060a0820190506152dd6000830186614125565b6152ea6020830185614d42565b6152f76060830184614d42565b949350505050565b60006040820190506153146000830185614125565b6153216020830184615250565b9392505050565b600060208201905081810360008301526153428184614134565b905092915050565b60006101008201905061536060008301856141e9565b61536d60808301846141e9565b9392505050565b6000602082019050818103600083015261538e818461429e565b905092915050565b60006101208201905081810360008301526153b1818a61429e565b905081810360208301526153c5818961429e565b905081810360408301526153d9818861429e565b90506153e86060830187614d42565b81810360a08301526153fa818661429e565b905061540960c0830185615250565b61541660e0830184614d42565b98975050505050505050565b6000602082019050615437600083018461435a565b92915050565b600060208201905081810360008301526154578184614378565b905092915050565b6000602082019050818103600083015261547981846143e2565b905092915050565b6000602082019050818103600083015261549a8161441b565b9050919050565b600060208201905081810360008301526154ba81614481565b9050919050565b600060208201905081810360008301526154da816144e7565b9050919050565b600060208201905081810360008301526154fa8161454d565b9050919050565b6000602082019050818103600083015261551a816145b3565b9050919050565b6000602082019050818103600083015261553a81614619565b9050919050565b6000602082019050818103600083015261555a8161467f565b9050919050565b6000602082019050818103600083015261557a816146bf565b9050919050565b6000602082019050818103600083015261559a8161474b565b9050919050565b600060208201905081810360008301526155ba816147b1565b9050919050565b600060208201905081810360008301526155da81614817565b9050919050565b600060208201905081810360008301526155fa8161487d565b9050919050565b6000602082019050818103600083015261561a816148e3565b9050919050565b6000602082019050818103600083015261563a81614923565b9050919050565b6000602082019050818103600083015261565a81614989565b9050919050565b6000602082019050818103600083015261567a816149ef565b9050919050565b6000602082019050818103600083015261569a81614a55565b9050919050565b600060208201905081810360008301526156ba81614a95565b9050919050565b600060208201905081810360008301526156da81614afb565b9050919050565b600060208201905081810360008301526156fa81614b61565b9050919050565b6000602082019050818103600083015261571a81614ba1565b9050919050565b6000602082019050818103600083015261573a81614be1565b9050919050565b6000602082019050818103600083015261575a81614c47565b9050919050565b6000602082019050818103600083015261577a81614cad565b9050919050565b60006040820190506157966000830184614d42565b92915050565b6000610140820190506157b26000830189614d42565b6157bf6040830188614d42565b6157cc6080830187614d42565b6157d960c0830186615250565b6157e660e0830185614d42565b6157f46101208301846140f8565b979650505050505050565b6000610160820190506158156000830185615112565b8181036101408301526158288184614ddb565b90509392505050565b6000604082019050818103600083015261584b818561518f565b9050818103602083015261585f8184614eba565b90509392505050565b600060208201905061587d6000830184615250565b92915050565b6000604051905081810181811067ffffffffffffffff821117156158a657600080fd5b8060405250919050565b600067ffffffffffffffff8211156158c757600080fd5b602082029050919050565b600067ffffffffffffffff8211156158e957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561591157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561593957600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615a9082615abf565b9050919050565b6000615aa282615abf565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000615af482615afb565b9050919050565b6000615b0682615b0d565b9050919050565b6000615b1882615abf565b9050919050565b82818337600083830152505050565b60005b83811015615b4c578082015181840152602081019050615b31565b83811115615b5b576000848401525b50505050565b6000601f19601f8301169050919050565b615b7b81615a85565b8114615b8657600080fd5b50565b615b9281615a97565b8114615b9d57600080fd5b50565b615ba981615aa9565b8114615bb457600080fd5b50565b615bc081615ab5565b8114615bcb57600080fd5b50565b615bd781615adf565b8114615be257600080fd5b5056fea26469706673582212205518d1ed4bf0d689cba722dedd6256ea1e6304f0414832a4ea74a51e278b948564736f6c634300060c0033",
"deployedBytecode": "0x6080604052600436106101d85760003560e01c806384f9b07a11610102578063b5753dee11610095578063dcfa1e5d11610064578063dcfa1e5d146106b1578063ddf911da146106dc578063eff4d17814610707578063f487e95214610723576101d8565b8063b5753dee14610607578063d11fa8c014610632578063d49d51811461065b578063d90d3a5814610686576101d8565b8063a568ce51116100d1578063a568ce5114610538578063a9b05a5614610576578063aae07890146105b3578063b47e51d7146105dc576101d8565b806384f9b07a1461048e5780638ad747e0146104b9578063907af6c0146104e45780639b0d85d31461050f576101d8565b8063566a8e621161017a57806375236e3f1161014957806375236e3f146103e6578063767b7d85146104115780637715a74c1461043a5780637b5b3b9f14610465576101d8565b8063566a8e621461033c57806362c4d3a31461036757806363bb012c146103925780637207f20e146103bd576101d8565b80632a6b024b116101b65780632a6b024b146102705780634301a344146102995780634ad729e0146102d65780635524d548146102ff576101d8565b80630221c717146101dd57806327d084e7146102085780632811112014610245575b600080fd5b3480156101e957600080fd5b506101f261074c565b6040516101ff9190615868565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613d32565b610752565b60405161023c9190615328565b60405180910390f35b34801561025157600080fd5b5061025a6109ff565b6040516102679190615868565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613e01565b610a05565b005b3480156102a557600080fd5b506102c060048036038101906102bb9190613daf565b610a72565b6040516102cd9190615868565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190613e68565b610a8a565b005b34801561030b57600080fd5b5061032660048036038101906103219190613daf565b610b94565b6040516103339190615422565b60405180910390f35b34801561034857600080fd5b50610351610da2565b60405161035e9190615868565b60405180910390f35b34801561037357600080fd5b5061037c610da8565b6040516103899190615868565b60405180910390f35b34801561039e57600080fd5b506103a7610dae565b6040516103b49190615868565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190614074565b610db4565b005b3480156103f257600080fd5b506103fb610e56565b6040516104089190615868565b60405180910390f35b34801561041d57600080fd5b506104386004803603810190610433919061404b565b610e5c565b005b34801561044657600080fd5b5061044f610ef6565b60405161045c9190615276565b60405180910390f35b34801561047157600080fd5b5061048c6004803603810190610487919061404b565b610f1c565b005b34801561049a57600080fd5b506104a3610fb6565b6040516104b09190615868565b60405180910390f35b3480156104c557600080fd5b506104ce610fbc565b6040516104db9190615868565b60405180910390f35b3480156104f057600080fd5b506104f9610fc2565b6040516105069190615868565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613f0f565b610fc8565b005b34801561054457600080fd5b5061055f600480360381019061055a9190613dd8565b611199565b60405161056d92919061534a565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190613dd8565b6112b2565b6040516105aa919061543d565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d5919061404b565b611393565b005b3480156105e857600080fd5b506105f161142d565b6040516105fe9190615868565b60405180910390f35b34801561061357600080fd5b5061061c611433565b6040516106299190615868565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190613c4a565b611439565b005b34801561066757600080fd5b5061067061150d565b60405161067d9190615868565b60405180910390f35b34801561069257600080fd5b5061069b611515565b6040516106a89190615868565b60405180910390f35b3480156106bd57600080fd5b506106c661151b565b6040516106d39190615868565b60405180910390f35b3480156106e857600080fd5b506106f1611521565b6040516106fe9190615868565b60405180910390f35b610721600480360381019061071c9190613c73565b611527565b005b34801561072f57600080fd5b5061074a60048036038101906107459190614074565b611dab565b005b60015481565b60606000835190508067ffffffffffffffff8111801561077157600080fd5b506040519080825280602002602001820160405280156107ab57816020015b610798612e9c565b8152602001906001900390816107905790505b50915060005b818110156109f75760008582815181106107c757fe5b60200260200101516040516020016107df9190615781565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b8282101561085d578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610821565b5050505084838151811061086d57fe5b602002602001018190525084601260008381526020019081526020016000205410156109e95761089b612e9c565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156109015783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906108c5565b50505050905061094f8160006002811061091757fe5b602002015186858151811061092857fe5b602002602001015160006002811061093c57fe5b6020020151611e4d90919063ffffffff16565b85848151811061095b57fe5b602002602001015160006002811061096f57fe5b60200201819052506109bf8160016002811061098757fe5b602002015186858151811061099857fe5b60200260200101516001600281106109ac57fe5b6020020151611e4d90919063ffffffff16565b8584815181106109cb57fe5b60200260200101516001600281106109df57fe5b6020020181905250505b5080806001019150506107b1565b505092915050565b600f5481565b610a10838383611e91565b6000610a1b8361207d565b9050610a6c333083601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120df909392919063ffffffff16565b50505050565b60126020528060005260406000206000915090505481565b6000610a958561207d565b90506000600554600454830281610aa857fe5b049050610ab88787878787612168565b6000811115610b3c57610b30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661277c9092919063ffffffff16565b80600c5401600c819055505b610b8b33828403601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661277c9092919063ffffffff16565b50505050505050565b6000610b9e612ec9565b60405180604001604052806000801b81526020016000801b8152509050610bc3612ee9565b604051806040016040528060106000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610c34578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610bf8565b50505050815260200160116000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610ca3578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610c67565b505050508152509050610ce18282600060028110610cbd57fe5b6020020151600060028110610cce57fe5b602002015161280290919063ffffffff16565b8015610d1e5750610d1d8282600060028110610cf957fe5b6020020151600160028110610d0a57fe5b602002015161280290919063ffffffff16565b5b8015610d5b5750610d5a8282600160028110610d3657fe5b6020020151600060028110610d4757fe5b602002015161280290919063ffffffff16565b5b8015610d985750610d978282600160028110610d7357fe5b6020020151600160028110610d8457fe5b602002015161280290919063ffffffff16565b5b1592505050919050565b60145481565b600e5481565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3b90615661565b60405180910390fd5b81600681905550806007819055505050565b600d5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906156c1565b60405180910390fd5b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390615501565b60405180910390fd5b8060028190555050565b600b5481565b60025481565b60005481565b610fd0612ec9565b611016610fee610fdf8561282a565b8661285690919063ffffffff16565b61100884610ffa61288f565b61285690919063ffffffff16565b611e4d90919063ffffffff16565b90506000611050308684604051602001611032939291906152c8565b6040516020818303038152906040528051906020012060001c6128f7565b9050838114611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90615601565b60405180910390fd5b6000856040516020016110a79190615781565b6040516020818303038152906040528051906020012090506110c881610b94565b15611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90615541565b60405180910390fd5b856011600083815260200190815260200160002060006002811061112857fe5b60020201600082015181600001556020820151816001015590505061114b61288f565b6011600083815260200190815260200160002060016002811061116a57fe5b6002020160008201518160000155602082015181600101559050506001600b5401600b81905550505050505050565b6111a1612e9c565b6111a9612e9c565b6000836040516020016111bc9190615781565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b8282101561123a5783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906111fe565b50505050925060116000828152602001908152602001600020600280602002604051908101604052809291906000905b828210156112a657838260020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061126a565b50505050915050915091565b60606000826040516020016112c79190615781565b604051602081830303815290604052805190602001209050601560008281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113865780601f1061135b57610100808354040283529160200191611386565b820191906000526020600020905b81548152906001019060200180831161136957829003601f168201915b5050505050915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90615621565b60405180910390fd5b8060008190555050565b600c5481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090615521565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b63ffffffff81565b60065481565b60055481565b60045481565b60005a905060008451905060608167ffffffffffffffff8111801561154b57600080fd5b5060405190808252806020026020018201604052801561158557816020015b611572612ec9565b81526020019060019003908161156a5790505b50905060608267ffffffffffffffff811180156115a157600080fd5b506040519080825280602002602001820160405280156115db57816020015b6115c8612ec9565b8152602001906001900390816115c05790505b50905082895114611621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611618906154a1565b60405180910390fd5b60005b8381101561190257600088828151811061163a57fe5b60200260200101516040516020016116529190615781565b60405160208183030381529060405280519060200120905061167381610b94565b6116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a9906155e1565b60405180910390fd5b6116bb8161292a565b6116c3612e9c565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156117295783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906116ed565b5050505090506117668c848151811061173e57fe5b60200260200101518260006002811061175357fe5b6020020151611e4d90919063ffffffff16565b6011600084815260200190815260200160002060006002811061178557fe5b6002020160008201518160000155602082015181600101559050506117c48b826001600281106117b157fe5b6020020151611e4d90919063ffffffff16565b601160008481526020019081526020016000206001600281106117e357fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b82821015611864578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611828565b5050505090506118a18c848151811061187957fe5b60200260200101518260006002811061188e57fe5b6020020151611e4d90919063ffffffff16565b8584815181106118ad57fe5b60200260200101819052506118dc8b826001600281106118c957fe5b6020020151611e4d90919063ffffffff16565b8484815181106118e857fe5b602002602001018190525050508080600101915050611624565b506000866040516020016119169190615781565b60405160208183030381529060405280519060200120905060005b6013805490508110156119a557816013828154811061194c57fe5b90600052602060002001541415611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90615761565b60405180910390fd5b8080600101915050611931565b5060138190806001815401808255809150506001900390600052602060002001600090919091909150556119d7612f16565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639471ac0a85858e8e8e6014548f6040518863ffffffff1660e01b8152600401611a409796959493929190615396565b60006040518083038186803b158015611a5857600080fd5b505afa158015611a6c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a95919061400a565b9050611a9f612f5f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9896040518263ffffffff1660e01b8152600401611afa919061543d565b60006040518083038186803b158015611b1257600080fd5b505afa158015611b26573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b4f9190613f9f565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a529878e83836040518363ffffffff1660e01b8152600401611bae929190615831565b60206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613d86565b611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c34906154c1565b60405180910390fd5b60005a8803905060003a600754600654840281611c5657fe5b040290506000811115611d1b5780341015611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90615561565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d0e573d6000803e3d6000fd5b5080600d5401600d819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc8234039081150290604051600060405180830381858888f19350505050158015611d63573d6000803e3d6000fd5b507f9b814ae8a45a4c40d4c60ffa92e0c4b76dec41407cb28b43df9daffa3685f9ac8c604051611d939190615374565b60405180910390a15050505050505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e32906156a1565b60405180910390fd5b81600481905550806005819055505050565b611e55612ec9565b6040518351815260208401516020820152825160408201526020830151606082015260408260808360065afa611e8a57600080fd5b5092915050565b63ffffffff8211158015611ead575063ffffffff82600a540111155b611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee3906154e1565b60405180910390fd5b81600a6000828254019250508190555081600e600082825401925050819055506001600f60008282540192505081905550600083604051602001611f309190615781565b604051602081830303815290604052805190602001209050611f5181610b94565b611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8790615581565b60405180910390fd5b611f998161292a565b611fa1612ec9565b60116000838152602001908152602001600020600060028110611fc057fe5b6002020160405180604001604052908160008201548152602001600182015481525050905061201161200285611ff461288f565b61285690919063ffffffff16565b82611e4d90919063ffffffff16565b9050806011600084815260200190815260200160002060006002811061203357fe5b6002020160008201518160000155602082015181600101559050508260156000848152602001908152602001600020908051906020019061207592919061303f565b505050505050565b600081600011158015612094575063ffffffff8211155b6120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca90615701565b60405180910390fd5b60005482029050919050565b612162846323b872dd60e01b85858560405160240161210093929190615291565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c2e565b50505050565b83600a5410156121ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a490615481565b60405180910390fd5b83600a600082825403925050819055506000856040516020016121d09190615781565b6040516020818303038152906040528051906020012090506121f181610b94565b612230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612227906155c1565b60405180910390fd5b6122398161292a565b612241612e9c565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156122a757838260020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061226b565b5050505090506122f26122d26122bc8861282a565b6122c461288f565b61285690919063ffffffff16565b826000600281106122df57fe5b6020020151611e4d90919063ffffffff16565b6011600084815260200190815260200160002060006002811061231157fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b82821015612392578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612356565b5050505090506123dd6123bd6123a78861282a565b6123af61288f565b61285690919063ffffffff16565b826000600281106123ca57fe5b6020020151611e4d90919063ffffffff16565b816000600281106123ea57fe5b60200201819052506000856040516020016124059190615781565b60405160208183030381529060405280519060200120905060005b60138054905081101561249457816013828154811061243b57fe5b90600052602060002001541415612487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247e90615721565b60405180910390fd5b8080600101915050612420565b506013819080600181540180825580915050600190039060005260206000200160009091909190915055836015600085815260200190815260200160002090805190602001906124e592919061303f565b506124ee6130bf565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bba28e3c8460006002811061253957fe5b60200201518560016002811061254b57fe5b60200201518c6014548c336040518763ffffffff1660e01b81526004016125779695949392919061579c565b6101406040518083038186803b15801561259057600080fd5b505afa1580156125a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c89190613fe0565b90506125d2613123565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9886040518263ffffffff1660e01b815260040161262d919061543d565b60006040518083038186803b15801561264557600080fd5b505afa158015612659573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126829190613f5e565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d039751f83836040518363ffffffff1660e01b81526004016126e19291906157ff565b60206040518083038186803b1580156126f957600080fd5b505afa15801561270d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127319190613d86565b612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276790615641565b60405180910390fd5b50505050505050505050565b6127fd8363a9059cbb60e01b848460405160240161279b9291906152ff565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c2e565b505050565b600081600001518360000151148015612822575081602001518360200151145b905092915050565b6000817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001039050919050565b61285e612ec9565b604051835181526020840151602082015282604082015260408260608360075afa61288857600080fd5b5092915050565b612897612ec9565b60405180604001604052807f077da99d806abd13c9f15ece5398525119d11e11e9836b2ee7d23f6159ad87d460001b81526020017f01485efa927f2ad41bff567eec88f32fb0a0f706588b4e41a8d587d008b7f87560001b815250905090565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828161292257fe5b069050919050565b600080600254141561294957600154438161294157fe5b0490506129a3565b6001600254141561296757600154428161295f57fe5b0490506129a2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299990615681565b60405180910390fd5b5b8060126000848152602001908152602001600020541015612c0a576129c6612ee9565b604051806040016040528060106000868152602001908152602001600020600280602002604051908101604052809291906000905b82821015612a375783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906129fb565b50505050815260200160116000868152602001908152602001600020600280602002604051908101604052809291906000905b82821015612aa6578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612a6a565b505050508152509050612b0681600160028110612abf57fe5b6020020151600060028110612ad057fe5b602002015182600060028110612ae257fe5b6020020151600060028110612af357fe5b6020020151611e4d90919063ffffffff16565b60106000858152602001908152602001600020600060028110612b2557fe5b600202016000820151816000015560208201518160010155905050612b9781600160028110612b5057fe5b6020020151600160028110612b6157fe5b602002015182600060028110612b7357fe5b6020020151600160028110612b8457fe5b6020020151611e4d90919063ffffffff16565b60106000858152602001908152602001600020600160028110612bb657fe5b600202016000820151816000015560208201518160010155905050601160008481526020019081526020016000206000612bf0919061318e565b816012600085815260200190815260200160002081905550505b806014541015612c2a578060148190555060136000612c2991906131b9565b5b5050565b6060612c90826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612cf59092919063ffffffff16565b9050600081511115612cf05780806020019051810190612cb09190613d86565b612cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce690615741565b60405180910390fd5b5b505050565b6060612d048484600085612d0d565b90509392505050565b606082471015612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d49906155a1565b60405180910390fd5b612d5b85612e22565b612d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d91906156e1565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051612dc4919061525f565b60006040518083038185875af1925050503d8060008114612e01576040519150601f19603f3d011682016040523d82523d6000602084013e612e06565b606091505b5091509150612e16828286612e35565b92505050949350505050565b600080823b905060008111915050919050565b60608315612e4557829050612e95565b600083511115612e585782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8c919061545f565b60405180910390fd5b9392505050565b60405180604001604052806002905b612eb3612ec9565b815260200190600190039081612eab5790505090565b604051806040016040528060008019168152602001600080191681525090565b60405180604001604052806002905b612f00612e9c565b815260200190600190039081612ef85790505090565b6040518060e00160405280606081526020016060815260200160608152602001612f3e612ec9565b81526020016060815260200160008152602001612f59612ec9565b81525090565b604051806103200160405280612f73612ec9565b8152602001612f80612ec9565b8152602001612f8d612ec9565b8152602001612f9a612ec9565b8152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001612ffb612e9c565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016130396131da565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061308057805160ff19168380011785556130ae565b828001600101855582156130ae579182015b828111156130ad578251825591602001919060010190613092565b5b5090506130bb9190613202565b5090565b6040518060c001604052806130d2612ec9565b81526020016130df612ec9565b81526020016130ec612ec9565b815260200160008152602001613100612ec9565b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806101400160405280613137612ec9565b8152602001613144612ec9565b8152602001613151612e9c565b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016131886131da565b81525090565b5060008082016000905560018201600090555060020160008082016000905560018201600090555050565b50805460008255906000526020600020908101906131d7919061321f565b50565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b5b8082111561321b576000816000905550600101613203565b5090565b5b80821115613238576000816000905550600101613220565b5090565b60008151905061324b81615b72565b92915050565b60008135905061326081615b89565b92915050565b600082601f83011261327757600080fd5b600261328a613285826158b0565b615883565b915081838560408402820111156132a057600080fd5b60005b838110156132d057816132b68882613542565b8452602084019350604083019250506001810190506132a3565b5050505092915050565b600082601f8301126132eb57600080fd5b81356132fe6132f9826158d2565b615883565b9150818183526020840193506020810190508385604084028201111561332357600080fd5b60005b83811015613353578161333988826134f6565b845260208401935060408301925050600181019050613326565b5050505092915050565b600082601f83011261336e57600080fd5b815161338161337c826158d2565b615883565b915081818352602084019350602081019050838560408402820111156133a657600080fd5b60005b838110156133d657816133bc8882613542565b8452602084019350604083019250506001810190506133a9565b5050505092915050565b600082601f8301126133f157600080fd5b81516134046133ff826158fa565b615883565b9150818183526020840193506020810190508385602084028201111561342957600080fd5b60005b83811015613459578161343f8882613c35565b84526020840193506020830192505060018101905061342c565b5050505092915050565b60008151905061347281615ba0565b92915050565b60008135905061348781615bb7565b92915050565b60008151905061349c81615bb7565b92915050565b600082601f8301126134b357600080fd5b81356134c66134c182615922565b615883565b915080825260208301602083018583830111156134e257600080fd5b6134ed838284615b1f565b50505092915050565b60006040828403121561350857600080fd5b6135126040615883565b9050600061352284828501613478565b600083015250602061353684828501613478565b60208301525092915050565b60006040828403121561355457600080fd5b61355e6040615883565b9050600061356e8482850161348d565b60008301525060206135828482850161348d565b60208301525092915050565b6000608082840312156135a057600080fd5b6135aa6080615883565b9050600082015167ffffffffffffffff8111156135c657600080fd5b6135d28482850161335d565b600083015250602082015167ffffffffffffffff8111156135f257600080fd5b6135fe8482850161335d565b602083015250604061361284828501613c35565b604083015250606061362684828501613c35565b60608301525092915050565b60006101e0828403121561364557600080fd5b613650610140615883565b9050600061366084828501613542565b600083015250604061367484828501613542565b602083015250608061368884828501613266565b60408301525061010061369d84828501613c35565b6060830152506101206136b284828501613c35565b6080830152506101406136c784828501613c35565b60a0830152506101606136dc84828501613c35565b60c0830152506101806136f184828501613c35565b60e0830152506101a061370684828501613c35565b610100830152506101c082015167ffffffffffffffff81111561372857600080fd5b6137348482850161358e565b6101208301525092915050565b6000610400828403121561375457600080fd5b61375f610320615883565b9050600061376f84828501613542565b600083015250604061378384828501613542565b602083015250608061379784828501613542565b60408301525060c06137ab84828501613542565b60608301525061010082015167ffffffffffffffff8111156137cc57600080fd5b6137d88482850161335d565b60808301525061012082015167ffffffffffffffff8111156137f957600080fd5b6138058482850161335d565b60a08301525061014082015167ffffffffffffffff81111561382657600080fd5b6138328482850161335d565b60c08301525061016082015167ffffffffffffffff81111561385357600080fd5b61385f8482850161335d565b60e08301525061018082015167ffffffffffffffff81111561388057600080fd5b61388c8482850161335d565b610100830152506101a082015167ffffffffffffffff8111156138ae57600080fd5b6138ba8482850161335d565b610120830152506101c082015167ffffffffffffffff8111156138dc57600080fd5b6138e88482850161335d565b610140830152506101e082015167ffffffffffffffff81111561390a57600080fd5b6139168482850161335d565b6101608301525061020082015167ffffffffffffffff81111561393857600080fd5b613944848285016133e0565b6101808301525061022061395a84828501613c35565b6101a08301525061024061397084828501613c35565b6101c08301525061026061398684828501613c35565b6101e08301525061028061399c84828501613266565b610200830152506103006139b284828501613c35565b610220830152506103206139c884828501613c35565b610240830152506103406139de84828501613c35565b610260830152506103606139f484828501613c35565b61028083015250610380613a0a84828501613c35565b6102a0830152506103a0613a2084828501613c35565b6102c0830152506103c0613a3684828501613c35565b6102e0830152506103e082015167ffffffffffffffff811115613a5857600080fd5b613a648482850161358e565b6103008301525092915050565b60006101408284031215613a8457600080fd5b613a8e60c0615883565b90506000613a9e84828501613542565b6000830152506040613ab284828501613542565b6020830152506080613ac684828501613542565b60408301525060c0613ada84828501613c35565b60608301525060e0613aee84828501613542565b608083015250610120613b038482850161323c565b60a08301525092915050565b60006101208284031215613b2257600080fd5b613b2c60e0615883565b9050600082015167ffffffffffffffff811115613b4857600080fd5b613b548482850161335d565b600083015250602082015167ffffffffffffffff811115613b7457600080fd5b613b808482850161335d565b602083015250604082015167ffffffffffffffff811115613ba057600080fd5b613bac8482850161335d565b6040830152506060613bc084828501613542565b60608301525060a082015167ffffffffffffffff811115613be057600080fd5b613bec8482850161335d565b60808301525060c0613c0084828501613c35565b60a08301525060e0613c1484828501613542565b60c08301525092915050565b600081359050613c2f81615bce565b92915050565b600081519050613c4481615bce565b92915050565b600060208284031215613c5c57600080fd5b6000613c6a84828501613251565b91505092915050565b600080600080600060e08688031215613c8b57600080fd5b600086013567ffffffffffffffff811115613ca557600080fd5b613cb1888289016132da565b9550506020613cc2888289016134f6565b945050606086013567ffffffffffffffff811115613cdf57600080fd5b613ceb888289016132da565b9350506080613cfc888289016134f6565b92505060c086013567ffffffffffffffff811115613d1957600080fd5b613d25888289016134a2565b9150509295509295909350565b60008060408385031215613d4557600080fd5b600083013567ffffffffffffffff811115613d5f57600080fd5b613d6b858286016132da565b9250506020613d7c85828601613c20565b9150509250929050565b600060208284031215613d9857600080fd5b6000613da684828501613463565b91505092915050565b600060208284031215613dc157600080fd5b6000613dcf84828501613478565b91505092915050565b600060408284031215613dea57600080fd5b6000613df8848285016134f6565b91505092915050565b600080600060808486031215613e1657600080fd5b6000613e24868287016134f6565b9350506040613e3586828701613c20565b925050606084013567ffffffffffffffff811115613e5257600080fd5b613e5e868287016134a2565b9150509250925092565b600080600080600060e08688031215613e8057600080fd5b6000613e8e888289016134f6565b9550506040613e9f88828901613c20565b9450506060613eb0888289016134f6565b93505060a086013567ffffffffffffffff811115613ecd57600080fd5b613ed9888289016134a2565b92505060c086013567ffffffffffffffff811115613ef657600080fd5b613f02888289016134a2565b9150509295509295909350565b600080600060808486031215613f2457600080fd5b6000613f32868287016134f6565b9350506040613f4386828701613c20565b9250506060613f5486828701613c20565b9150509250925092565b600060208284031215613f7057600080fd5b600082015167ffffffffffffffff811115613f8a57600080fd5b613f9684828501613632565b91505092915050565b600060208284031215613fb157600080fd5b600082015167ffffffffffffffff811115613fcb57600080fd5b613fd784828501613741565b91505092915050565b60006101408284031215613ff357600080fd5b600061400184828501613a71565b91505092915050565b60006020828403121561401c57600080fd5b600082015167ffffffffffffffff81111561403657600080fd5b61404284828501613b0f565b91505092915050565b60006020828403121561405d57600080fd5b600061406b84828501613c20565b91505092915050565b6000806040838503121561408757600080fd5b600061409585828601613c20565b92505060206140a685828601613c20565b9150509250929050565b60006140bc8383614192565b60808301905092915050565b60006140d48383614d13565b60408301905092915050565b60006140ec8383615241565b60208301905092915050565b61410181615ae9565b82525050565b61411081615a97565b82525050565b61411f81615a85565b82525050565b61412e81615a85565b82525050565b600061413f82615988565b61414981856159fe565b93506141548361594e565b8060005b8381101561418557815161416c88826140b0565b9750614177836159ca565b925050600181019050614158565b5085935050505092915050565b61419b81615993565b6141a58184615a0f565b92506141b08261595e565b8060005b838110156141e15781516141c887826140c8565b96506141d3836159d7565b9250506001810190506141b4565b505050505050565b6141f281615993565b6141fc8184615a1a565b92506142078261595e565b8060005b8381101561423857815161421f87826140c8565b965061422a836159d7565b92505060018101905061420b565b505050505050565b600061424b8261599e565b6142558185615a25565b935061426083615968565b8060005b8381101561429157815161427888826140c8565b9750614283836159e4565b925050600181019050614264565b5085935050505092915050565b60006142a98261599e565b6142b38185615a36565b93506142be83615968565b8060005b838110156142ef5781516142d688826140c8565b97506142e1836159e4565b9250506001810190506142c2565b5085935050505092915050565b6000614307826159a9565b6143118185615a47565b935061431c83615978565b8060005b8381101561434d57815161433488826140e0565b975061433f836159f1565b925050600181019050614320565b5085935050505092915050565b61436381615aa9565b82525050565b61437281615ab5565b82525050565b6000614383826159b4565b61438d8185615a58565b935061439d818560208601615b2e565b6143a681615b61565b840191505092915050565b60006143bc826159b4565b6143c68185615a69565b93506143d6818560208601615b2e565b80840191505092915050565b60006143ed826159bf565b6143f78185615a74565b9350614407818560208601615b2e565b61441081615b61565b840191505092915050565b6000614428602c83615a74565b91507f5b52617a652072656465656d5d204661696c65643a20496e76616c696420726560008301527f6465656d20616d6f756e742e00000000000000000000000000000000000000006020830152604082019050919050565b600061448e602c83615a74565b91507f5b52617a65207472616e736665725d20496e707574206172726179206c656e6760008301527f7468206d69736d617463682100000000000000000000000000000000000000006020830152604082019050919050565b60006144f4602483615a74565b91507f5b52617a65207472616e736665725d204661696c65643a20766572696669636160008301527f74696f6e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061455a603483615a74565b91507f5b52617a65206d696e745d204d696e742070757368657320636f6e747261637460008301527f2070617374206d6178696d756d2076616c75652e0000000000000000000000006020830152604082019050919050565b60006145c0603483615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e6420626173652e0000000000000000000000006020830152604082019050919050565b6000614626603083615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765206167656e63792e000000000000000000000000000000006020830152604082019050919050565b600061468c601b83615a74565b91507f4163636f756e7420616c726561647920726567697374657265642100000000006000830152602082019050919050565b60006146cc604283615a74565b91507f5b52617a65207472616e736665725d204e6f7420656e6f75676820666565207360008301527f656e74207769746820746865207472616e73666572207472616e73616374696f60208301527f6e2e0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614758602783615a74565b91507f5b52617a65206d696e745d204163636f756e74206e6f7420796574207265676960008301527f7374657265642e000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006147be602683615a74565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614824602983615a74565b91507f5b52617a652072656465656d5d204163636f756e74206e6f742079657420726560008301527f67697374657265642e00000000000000000000000000000000000000000000006020830152604082019050919050565b600061488a602b83615a74565b91507f5b52617a65207472616e736665725d204163636f756e74206e6f74207965742060008301527f726567697374657265642e0000000000000000000000000000000000000000006020830152604082019050919050565b60006148f0601f83615a74565b91507f496e76616c696420726567697374726174696f6e207369676e617475726521006000830152602082019050919050565b6000614930602e83615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520756e69742e0000000000000000000000000000000000006020830152604082019050919050565b6000614996602383615a74565b91507f5b52617a652072656465656d5d204661696c65643a207665726966696361746960008301527f6f6e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006149fc603f83615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765207472616e73666572206665652073747261746567792e006020830152604082019050919050565b6000614a62601383615a74565b91507f496e76616c696420726f756e6420626173652e000000000000000000000000006000830152602082019050919050565b6000614aa2603d83615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e67652072656465656d206665652073747261746567792e0000006020830152604082019050919050565b6000614b08603683615a74565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e64206c656e6774682e000000000000000000006020830152604082019050919050565b6000614b6e601d83615a74565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000614bae601383615a74565b91507f416d6f756e74206f7574206f662072616e6765000000000000000000000000006000830152602082019050919050565b6000614bee602183615a74565b91507f5b52617a652072656465656d5d204e6f6e636520616c7265616479207365656e60008301527f21000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614c54602a83615a74565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000614cba602383615a74565b91507f5b52617a65207472616e736665725d204e6f6e636520616c726561647920736560008301527f656e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151614d296000850182614369565b506020820151614d3c6020850182614369565b50505050565b604082016000820151614d586000850182614369565b506020820151614d6b6020850182614369565b50505050565b60006080830160008301518482036000860152614d8e8282614240565b91505060208301518482036020860152614da88282614240565b9150506040830151614dbd6040860182615241565b506060830151614dd06060860182615241565b508091505092915050565b60006101e083016000830151614df46000860182614d13565b506020830151614e076040860182614d13565b506040830151614e1a6080860182614192565b506060830151614e2e610100860182615241565b506080830151614e42610120860182615241565b5060a0830151614e56610140860182615241565b5060c0830151614e6a610160860182615241565b5060e0830151614e7e610180860182615241565b50610100830151614e936101a0860182615241565b506101208301518482036101c0860152614ead8282614d71565b9150508091505092915050565b600061040083016000830151614ed36000860182614d13565b506020830151614ee66040860182614d13565b506040830151614ef96080860182614d13565b506060830151614f0c60c0860182614d13565b506080830151848203610100860152614f258282614240565b91505060a0830151848203610120860152614f408282614240565b91505060c0830151848203610140860152614f5b8282614240565b91505060e0830151848203610160860152614f768282614240565b915050610100830151848203610180860152614f928282614240565b9150506101208301518482036101a0860152614fae8282614240565b9150506101408301518482036101c0860152614fca8282614240565b9150506101608301518482036101e0860152614fe68282614240565b91505061018083015184820361020086015261500282826142fc565b9150506101a0830151615019610220860182615241565b506101c083015161502e610240860182615241565b506101e0830151615043610260860182615241565b50610200830151615058610280860182614192565b5061022083015161506d610300860182615241565b50610240830151615082610320860182615241565b50610260830151615097610340860182615241565b506102808301516150ac610360860182615241565b506102a08301516150c1610380860182615241565b506102c08301516150d66103a0860182615241565b506102e08301516150eb6103c0860182615241565b506103008301518482036103e08601526151058282614d71565b9150508091505092915050565b610140820160008201516151296000850182614d13565b50602082015161513c6040850182614d13565b50604082015161514f6080850182614d13565b50606082015161516260c0850182615241565b50608082015161517560e0850182614d13565b5060a0820151615189610120850182614116565b50505050565b60006101208301600083015184820360008601526151ad8282614240565b915050602083015184820360208601526151c78282614240565b915050604083015184820360408601526151e18282614240565b91505060608301516151f66060860182614d13565b50608083015184820360a086015261520e8282614240565b91505060a083015161522360c0860182615241565b5060c083015161523660e0860182614d13565b508091505092915050565b61524a81615adf565b82525050565b61525981615adf565b82525050565b600061526b82846143b1565b915081905092915050565b600060208201905061528b6000830184614107565b92915050565b60006060820190506152a66000830186614125565b6152b36020830185614125565b6152c06040830184615250565b949350505050565b600060a0820190506152dd6000830186614125565b6152ea6020830185614d42565b6152f76060830184614d42565b949350505050565b60006040820190506153146000830185614125565b6153216020830184615250565b9392505050565b600060208201905081810360008301526153428184614134565b905092915050565b60006101008201905061536060008301856141e9565b61536d60808301846141e9565b9392505050565b6000602082019050818103600083015261538e818461429e565b905092915050565b60006101208201905081810360008301526153b1818a61429e565b905081810360208301526153c5818961429e565b905081810360408301526153d9818861429e565b90506153e86060830187614d42565b81810360a08301526153fa818661429e565b905061540960c0830185615250565b61541660e0830184614d42565b98975050505050505050565b6000602082019050615437600083018461435a565b92915050565b600060208201905081810360008301526154578184614378565b905092915050565b6000602082019050818103600083015261547981846143e2565b905092915050565b6000602082019050818103600083015261549a8161441b565b9050919050565b600060208201905081810360008301526154ba81614481565b9050919050565b600060208201905081810360008301526154da816144e7565b9050919050565b600060208201905081810360008301526154fa8161454d565b9050919050565b6000602082019050818103600083015261551a816145b3565b9050919050565b6000602082019050818103600083015261553a81614619565b9050919050565b6000602082019050818103600083015261555a8161467f565b9050919050565b6000602082019050818103600083015261557a816146bf565b9050919050565b6000602082019050818103600083015261559a8161474b565b9050919050565b600060208201905081810360008301526155ba816147b1565b9050919050565b600060208201905081810360008301526155da81614817565b9050919050565b600060208201905081810360008301526155fa8161487d565b9050919050565b6000602082019050818103600083015261561a816148e3565b9050919050565b6000602082019050818103600083015261563a81614923565b9050919050565b6000602082019050818103600083015261565a81614989565b9050919050565b6000602082019050818103600083015261567a816149ef565b9050919050565b6000602082019050818103600083015261569a81614a55565b9050919050565b600060208201905081810360008301526156ba81614a95565b9050919050565b600060208201905081810360008301526156da81614afb565b9050919050565b600060208201905081810360008301526156fa81614b61565b9050919050565b6000602082019050818103600083015261571a81614ba1565b9050919050565b6000602082019050818103600083015261573a81614be1565b9050919050565b6000602082019050818103600083015261575a81614c47565b9050919050565b6000602082019050818103600083015261577a81614cad565b9050919050565b60006040820190506157966000830184614d42565b92915050565b6000610140820190506157b26000830189614d42565b6157bf6040830188614d42565b6157cc6080830187614d42565b6157d960c0830186615250565b6157e660e0830185614d42565b6157f46101208301846140f8565b979650505050505050565b6000610160820190506158156000830185615112565b8181036101408301526158288184614ddb565b90509392505050565b6000604082019050818103600083015261584b818561518f565b9050818103602083015261585f8184614eba565b90509392505050565b600060208201905061587d6000830184615250565b92915050565b6000604051905081810181811067ffffffffffffffff821117156158a657600080fd5b8060405250919050565b600067ffffffffffffffff8211156158c757600080fd5b602082029050919050565b600067ffffffffffffffff8211156158e957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561591157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561593957600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615a9082615abf565b9050919050565b6000615aa282615abf565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000615af482615afb565b9050919050565b6000615b0682615b0d565b9050919050565b6000615b1882615abf565b9050919050565b82818337600083830152505050565b60005b83811015615b4c578082015181840152602081019050615b31565b83811115615b5b576000848401525b50505050565b6000601f19601f8301169050919050565b615b7b81615a85565b8114615b8657600080fd5b50565b615b9281615a97565b8114615b9d57600080fd5b50565b615ba981615aa9565b8114615bb457600080fd5b50565b615bc081615ab5565b8114615bcb57600080fd5b50565b615bd781615adf565b8114615be257600080fd5b5056fea26469706673582212205518d1ed4bf0d689cba722dedd6256ea1e6304f0414832a4ea74a51e278b948564736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "200:1189:7:-:0;;;587:2:1;560:29;;624:1;596:29;;811:1;773:39;;858:3;818:43;;942:1;902:41;;991:1;949:43;;1089:1;1060:30;;1123:1;1096:28;;1162:1;1130:33;;1203:1;1169:35;;1240:1;1210:31;;1279:1;1247:33;;1639:1;1603:37;;287:161:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;375:9;386:7;395:5;2267:10:1;2253:11;;:24;;;;;;;;;;;;;;;;;;2316:9;2287:13;;:39;;;;;;;;;;;;;;;;;;2361:7;2336:11;;:33;;;;;;;;;;;;;;;;;;2386:5;2379:4;:12;;;;2173:225;;;434:6:7::1;419:5;;:22;;;;;;;;;;;;;;;;;;287:161:::0;;;;200:1189;;5:134:-1;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;146:134::-;;230:6;224:13;215:22;;242:33;269:5;242:33;:::i;:::-;209:71;;;;:::o;287:672::-;;;;;453:3;441:9;432:7;428:23;424:33;421:2;;;470:1;467;460:12;421:2;505:1;522:64;578:7;569:6;558:9;554:22;522:64;:::i;:::-;512:74;;484:108;623:2;641:64;697:7;688:6;677:9;673:22;641:64;:::i;:::-;631:74;;602:109;742:2;760:64;816:7;807:6;796:9;792:22;760:64;:::i;:::-;750:74;;721:109;861:2;879:64;935:7;926:6;915:9;911:22;879:64;:::i;:::-;869:74;;840:109;415:544;;;;;;;:::o;966:91::-;;1028:24;1046:5;1028:24;:::i;:::-;1017:35;;1011:46;;;:::o;1064:121::-;;1137:42;1130:5;1126:54;1115:65;;1109:76;;;:::o;1192:72::-;;1254:5;1243:16;;1237:27;;;:::o;1271:117::-;1340:24;1358:5;1340:24;:::i;:::-;1333:5;1330:35;1320:2;;1379:1;1376;1369:12;1320:2;1314:74;:::o;1395:117::-;1464:24;1482:5;1464:24;:::i;:::-;1457:5;1454:35;1444:2;;1503:1;1500;1493:12;1444:2;1438:74;:::o;200:1189:7:-;;;;;;;",
"deployedSourceMap": "200:1189:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:29:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6238:837;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1247:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;454:391:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1445:49:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;851:536:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5713:337:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1603:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1210:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1060:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1169:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3703:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;686:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3505:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1096:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;596:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;533:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4274:1433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7081:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7398:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3899:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1130:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;949:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4068:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;320:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;902:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;818:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;773:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10525:2195;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2923:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;560:29;;;;:::o;6238:837::-;6320:34;6585:12;6600:1;:8;6585:23;;6652:4;6629:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6618:39;;6672:9;6667:402;6691:4;6687:1;:8;6667:402;;;6716:13;6753:1;6755;6753:4;;;;;;;;;;;;;;6742:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;6732:27;;;;;;6716:43;;6787:3;:10;6791:5;6787:10;;;;;;;;;;;6773:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;6782:1;6773:11;;;;;;;;;;;;;:24;;;;6839:5;6815:14;:21;6830:5;6815:21;;;;;;;;;;;;:29;6811:248;;;6864:31;;:::i;:::-;6898:7;:14;6906:5;6898:14;;;;;;;;;;;6864:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6947:31;6967:7;6975:1;6967:10;;;;;;;;;;;6947:8;6956:1;6947:11;;;;;;;;;;;;;;6959:1;6947:14;;;;;;;;;;;:19;;:31;;;;:::i;:::-;6930:8;6939:1;6930:11;;;;;;;;;;;;;;6942:1;6930:14;;;;;;;;;;:48;;;;7013:31;7033:7;7041:1;7033:10;;;;;;;;;;;7013:8;7022:1;7013:11;;;;;;;;;;;;;;7025:1;7013:14;;;;;;;;;;;:19;;:31;;;;:::i;:::-;6996:8;7005:1;6996:11;;;;;;;;;;;;;;7008:1;6996:14;;;;;;;;;;:48;;;;6811:248;;6667:402;6697:3;;;;;;;6667:402;;;;6238:837;;;;;:::o;1247:33::-;;;;:::o;454:391:7:-;552:33;561:1;564:10;576:8;552;:33::i;:::-;596:20;619:26;634:10;619:14;:26::i;:::-;596:49;;775:63;798:10;818:4;825:12;775:5;;;;;;;;;;;:22;;;;:63;;;;;;:::i;:::-;454:391;;;;:::o;1445:49:1:-;;;;;;;;;;;;;;;;;:::o;851:536:7:-;995:20;1018:26;1033:10;1018:14;:26::i;:::-;995:49;;1054:11;1106:22;;1083:20;;1068:12;:35;:60;;;;;;1054:74;;1140:45;1151:1;1154:10;1166:1;1169:5;1176:8;1140:10;:45::i;:::-;1206:1;1200:3;:7;1196:125;;;1223:36;1242:11;;;;;;;;;;;1255:3;1223:5;;;;;;;;;;;:18;;;;:36;;;;;:::i;:::-;1307:3;1290:14;;:20;1273:14;:37;;;;1196:125;1330:50;1349:10;1376:3;1361:12;:18;1330:5;;;;;;;;;;;:18;;;;:50;;;;;:::i;:::-;851:536;;;;;;;:::o;5713:337:1:-;5769:4;5785:25;;:::i;:::-;5813:19;;;;;;;;5827:1;5813:19;;;;;;5830:1;5813:19;;;;;5785:47;;5842:34;;:::i;:::-;:65;;;;;;;;5880:3;:10;5884:5;5880:10;;;;;;;;;;;5842:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5892:7;:14;5900:5;5892:14;;;;;;;;;;;5842:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5926:26;5947:4;5926:7;5934:1;5926:10;;;;;;;;;;;5937:1;5926:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;:56;;;;;5956:26;5977:4;5956:7;5964:1;5956:10;;;;;;;;;;;5967:1;5956:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;5926:56;:86;;;;;5986:26;6007:4;5986:7;5994:1;5986:10;;;;;;;;;;;5997:1;5986:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;5926:86;:116;;;;;6016:26;6037:4;6016:7;6024:1;6016:10;;;;;;;;;;;6027:1;6016:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;5926:116;5924:119;5917:126;;;;5713:337;;;:::o;1603:37::-;;;;:::o;1210:31::-;;;;:::o;1060:30::-;;;;:::o;3210:289::-;3321:11;;;;;;;;;;;3307:25;;:10;:25;;;3299:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;3435:9;3410:22;:34;;;;3481:11;3454:24;:38;;;;3210:289;;:::o;1169:35::-;;;;:::o;3703:190::-;3784:11;;;;;;;;;;;3770:25;;:10;:25;;;3762:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;3876:10;3864:9;:22;;;;3703:190;:::o;686:34::-;;;;;;;;;;;;;:::o;3505:192::-;3588:11;;;;;;;;;;;3574:25;;:10;:25;;;3566:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;3679:11;3666:10;:24;;;;3505:192;:::o;1096:28::-;;;;:::o;596:29::-;;;;:::o;533:19::-;;;;:::o;4274:1433::-;4436:22;;:::i;:::-;4461:40;4484:16;4491:8;:1;:6;:8::i;:::-;4484:1;:6;;:16;;;;:::i;:::-;4461:17;4476:1;4461:9;:7;:9::i;:::-;:14;;:17;;;;:::i;:::-;:22;;:40;;;;:::i;:::-;4436:65;;4511:17;4531:58;4568:4;4575:1;4578;4549:31;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4539:42;;;;;;4531:51;;:56;:58::i;:::-;4511:78;;4620:1;4607:9;:14;4599:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4667:13;4704:1;4693:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;4683:24;;;;;;4667:40;;4726:17;4737:5;4726:10;:17::i;:::-;4725:18;4717:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5624:1;5604:7;:14;5612:5;5604:14;;;;;;;;;;;5619:1;5604:17;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;;5655:9;:7;:9::i;:::-;5635:7;:14;5643:5;5635:14;;;;;;;;;;;5650:1;5635:17;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;;5699:1;5687:9;;:13;5675:9;:25;;;;4274:1433;;;;;;:::o;7081:311::-;7152:35;;:::i;:::-;7189:33;;:::i;:::-;7234:13;7271:1;7260:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;7250:24;;;;;;7234:40;;7298:3;:10;7302:5;7298:10;;;;;;;;;;;7284:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7330:7;:14;7338:5;7330:14;;;;;;;;;;;7318:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7354:31;7081:311;;;:::o;7398:199::-;7462:20;7494:13;7531:1;7520:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;7510:24;;;;;;7494:40;;7554:5;:12;7560:5;7554:12;;;;;;;;;;;7544:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7576:14;7398:199;;;:::o;3899:163::-;3971:11;;;;;;;;;;;3957:25;;:10;:25;;;3949:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:5;4043:4;:12;;;;3899:163;:::o;1130:33::-;;;;:::o;949:43::-;;;;:::o;4068:200::-;4161:11;;;;;;;;;;;4147:25;;:10;:25;;;4139:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;4249:12;4235:11;;:26;;;;;;;;;;;;;;;;;;4068:200;:::o;320:37::-;350:7;320:37;:::o;902:41::-;;;;:::o;818:43::-;;;;:::o;773:39::-;;;;:::o;10525:2195::-;10735:16;10754:9;10735:28;;10843:12;10858:1;:8;10843:23;;10876:26;10925:4;10905:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10876:54;;10940:26;10989:4;10969:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10940:54;;11024:4;11012:1;:8;:16;11004:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11094:9;11089:615;11113:4;11109:1;:8;11089:615;;;11138:13;11175:1;11177;11175:4;;;;;;;;;;;;;;11164:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;11154:27;;;;;;11138:43;;11203:17;11214:5;11203:10;:17::i;:::-;11195:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11282:15;11291:5;11282:8;:15::i;:::-;11311:31;;:::i;:::-;11345:7;:14;11353:5;11345:14;;;;;;;;;;;11311:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11393:21;11409:1;11411;11409:4;;;;;;;;;;;;;;11393:7;11401:1;11393:10;;;;;;;;;;;:15;;:21;;;;:::i;:::-;11373:7;:14;11381:5;11373:14;;;;;;;;;;;11388:1;11373:17;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;11448:18;11464:1;11448:7;11456:1;11448:10;;;;;;;;;;;:15;;:18;;;;:::i;:::-;11428:7;:14;11436:5;11428:14;;;;;;;;;;;11443:1;11428:17;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;;11598:3;:10;11602:5;11598:10;;;;;;;;;;;11588:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11631:21;11647:1;11649;11647:4;;;;;;;;;;;;;;11631:7;11639:1;11631:10;;;;;;;;;;;:15;;:21;;;;:::i;:::-;11622:3;11626:1;11622:6;;;;;;;;;;;;;:30;;;;11675:18;11691:1;11675:7;11683:1;11675:10;;;;;;;;;;;:15;;:18;;;;:::i;:::-;11666:3;11670:1;11666:6;;;;;;;;;;;;;:27;;;;11089:615;;11119:3;;;;;;;11089:615;;;;11714:13;11751:1;11740:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;11730:24;;;;;;11714:40;;11769:9;11764:141;11788:9;:16;;;;11784:1;:20;11764:141;;;11849:5;11833:9;11843:1;11833:12;;;;;;;;;;;;;;;;:21;;11825:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11806:3;;;;;;;11764:141;;;;11914:9;11929:5;11914:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11946:38;;:::i;:::-;11987:13;;;;;;;;;;;:27;;;12015:3;12020;12025:1;12028;12031;12034:18;;12054:1;11987:69;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11946:110;;12066:36;;:::i;:::-;12105:13;;;;;;;;;;;:25;;;12131:5;12105:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12066:71;;12156:13;;;;;;;;;;;:20;;;12177:8;12187:10;12156:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12148:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12250:15;12279:9;12268:8;:20;12250:38;;12307:11;12385;12357:24;;12332:22;;12322:7;:32;:59;;;;;;12321:75;12307:89;;12416:1;12410:3;:7;12406:227;;;12454:3;12441:9;:16;;12433:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;12542:11;;;;;;;;;;;:20;;:25;12563:3;12542:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:3;12600:16;;:22;12581:16;:41;;;;12406:227;12642:10;:19;;:36;12674:3;12662:9;:15;12642:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12694:19;12711:1;12694:19;;;;;;:::i;:::-;;;;;;;;10525:2195;;;;;;;;;;;;;;:::o;2923:281::-;3032:11;;;;;;;;;;;3018:25;;:10;:25;;;3010:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;3142:9;3119:20;:32;;;;3186:11;3161:22;:36;;;;2923:281;;:::o;2287:602:9:-;2362:16;;:::i;:::-;2428:4;2422:11;2462:2;2456:9;2453:1;2446:20;2514:4;2510:2;2506:13;2500:20;2493:4;2490:1;2486:12;2479:42;2561:2;2555:9;2548:4;2545:1;2541:12;2534:31;2613:4;2609:2;2605:13;2599:20;2592:4;2589:1;2585:12;2578:42;2822:4;2819:1;2813:4;2810:1;2804:4;2797:5;2786:41;2776:2;;2857:1;2854;2847:12;2776:2;2399:484;;;;;:::o;8549:650:1:-;350:7;8658:6;:13;;:44;;;;;350:7;8689:6;8675:11;;:20;:27;;8658:44;8650:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;8784:6;8769:11;;:21;;;;;;;;;;;8816:6;8800:12;;:22;;;;;;;;;;;8850:1;8832:14;;:19;;;;;;;;;;;8862:13;8899:1;8888:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;8878:24;;;;;;8862:40;;8920:17;8931:5;8920:10;:17::i;:::-;8912:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8991:15;9000:5;8991:8;:15::i;:::-;9017:28;;:::i;:::-;9048:7;:14;9056:5;9048:14;;;;;;;;;;;9063:1;9048:17;;;;;;;;;;9017:48;;;;;;;;;;;;;;;;;;;;;;;;;;;9085:36;9098:22;9113:6;9098:9;:7;:9::i;:::-;:14;;:22;;;;:::i;:::-;9085:7;:12;;:36;;;;:::i;:::-;9075:46;;9151:7;9131;:14;9139:5;9131:14;;;;;;;;;;;9146:1;9131:17;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;;9184:8;9169:5;:12;9175:5;9169:12;;;;;;;;;;;:23;;;;;;;;;;;;:::i;:::-;;8549:650;;;;;:::o;2722:195::-;2789:7;2821:10;2816:1;:15;;:36;;;;;350:7;2835:10;:17;;2816:36;2808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2906:4;;2893:10;:17;2886:24;;2722:195;;;:::o;885:203:17:-;985:96;1005:5;1035:27;;;1064:4;1070:2;1074:5;1012:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;985:19;:96::i;:::-;885:203;;;;:::o;9205:1314:1:-;9375:6;9360:11;;:21;;9352:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9455:6;9440:11;;:21;;;;;;;;;;;9481:13;9518:1;9507:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;9497:24;;;;;;9481:40;;9539:17;9550:5;9539:10;:17::i;:::-;9531:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9612:15;9621:5;9612:8;:15::i;:::-;9638:31;;:::i;:::-;9672:7;:14;9680:5;9672:14;;;;;;;;;;;9638:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9716:46;9732:29;9747:13;:6;:11;:13::i;:::-;9732:9;:7;:9::i;:::-;:14;;:29;;;;:::i;:::-;9716:7;9724:1;9716:10;;;;;;;;;;;:15;;:46;;;;:::i;:::-;9696:7;:14;9704:5;9696:14;;;;;;;;;;;9711:1;9696:17;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;9783:3;:10;9787:5;9783:10;;;;;;;;;;;9773:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9890:46;9906:29;9921:13;:6;:11;:13::i;:::-;9906:9;:7;:9::i;:::-;:14;;:29;;;;:::i;:::-;9890:7;9898:1;9890:10;;;;;;;;;;;:15;;:46;;;;:::i;:::-;9877:7;9885:1;9877:10;;;;;;;;;;:59;;;;9946:13;9983:1;9972:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;9962:24;;;;;;9946:40;;10001:9;9996:139;10020:9;:16;;;;10016:1;:20;9996:139;;;10081:5;10065:9;10075:1;10065:12;;;;;;;;;;;;;;;;:21;;10057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10038:3;;;;;;;9996:139;;;;10144:9;10159:5;10144:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10191:8;10176:5;:12;10182:5;10176:12;;;;;;;;;;;:23;;;;;;;;;;;;:::i;:::-;;10210:36;;:::i;:::-;10249:11;;;;;;;;;;;:25;;;10275:7;10283:1;10275:10;;;;;;;;;;;10287:7;10295:1;10287:10;;;;;;;;;;;10299:1;10302:18;;10322:1;10325:10;10249:87;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10210:126;;10346:34;;:::i;:::-;10383:11;;;;;;;;;;;:23;;;10407:5;10383:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10346:67;;10432:11;;;;;;;;;;;:18;;;10451:8;10461:10;10432:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10424:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9205:1314;;;;;;;;;;:::o;704:175:17:-;786:86;806:5;836:23;;;861:2;865:5;813:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;786:19;:86::i;:::-;704:175;;;:::o;3619:135:9:-;3696:4;3727:2;:4;;;3719:2;:4;;;:12;:28;;;;;3743:2;:4;;;3735:2;:4;;;:12;3719:28;3712:35;;3619:135;;;;:::o;912:96::-;960:7;1000:1;143:66;986:15;979:22;;912:96;;;:::o;2895:528::-;2961:16;;:::i;:::-;3027:4;3021:11;3061:1;3055:8;3052:1;3045:19;3111:4;3108:1;3104:12;3098:19;3091:4;3088:1;3084:12;3077:41;3152:1;3145:4;3142:1;3138:12;3131:23;3356:4;3353:1;3347:4;3344:1;3338:4;3331:5;3320:41;3310:2;;3391:1;3388;3381:12;3310:2;2998:419;;;;;:::o;3760:219::-;3796:14;;:::i;:::-;3829:143;;;;;;;;3837:66;3829:143;;;;;;3905:66;3829:143;;;;;3822:150;;3760:219;:::o;676:96::-;724:7;143:66;750:1;:15;;;;;;743:22;;676:96;;;:::o;7603:940:1:-;7655:9;7696:1;7682:10;;:15;7678:196;;;7730:9;;7715:12;:24;;;;;;7711:28;;7678:196;;;7772:1;7758:10;;:15;7754:120;;;7809:9;;7791:15;:27;;;;;;7787:31;;7754:120;;;7845:29;;;;;;;;;;:::i;:::-;;;;;;;;7754:120;7678:196;7913:1;7889:14;:21;7904:5;7889:21;;;;;;;;;;;;:25;7885:538;;;7930:34;;:::i;:::-;:65;;;;;;;;7968:3;:10;7972:5;7968:10;;;;;;;;;;;7930:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:7;:14;7988:5;7980:14;;;;;;;;;;;7930:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8025:33;8044:7;8052:1;8044:10;;;;;;;;;;;8055:1;8044:13;;;;;;;;;;;8025:7;8033:1;8025:10;;;;;;;;;;;8036:1;8025:13;;;;;;;;;;;:18;;:33;;;;:::i;:::-;8009:3;:10;8013:5;8009:10;;;;;;;;;;;8020:1;8009:13;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;8088:33;8107:7;8115:1;8107:10;;;;;;;;;;;8118:1;8107:13;;;;;;;;;;;8088:7;8096:1;8088:10;;;;;;;;;;;8099:1;8088:13;;;;;;;;;;;:18;;:33;;;;:::i;:::-;8072:3;:10;8076:5;8072:10;;;;;;;;;;;8083:1;8072:13;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;8295:7;:14;8303:5;8295:14;;;;;;;;;;;;8288:21;;;;:::i;:::-;8411:1;8387:14;:21;8402:5;8387:21;;;;;;;;;;;:25;;;;7885:538;;8457:1;8436:18;;:22;8432:105;;;8495:1;8474:18;:22;;;;8517:9;;8510:16;;;;:::i;:::-;8432:105;7603:940;;:::o;2967:751:17:-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3386:95;;3515:1;3495:10;:17;:21;3491:221;;;3635:10;3624:30;;;;;;;;;;;;:::i;:::-;3616:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3491:221;2967:751;;;:::o;3581:193:18:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;;3581:193;;;;;:::o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;;;;4608:523;;;;;;:::o;726:413::-;786:4;989:12;1098:7;1086:20;1078:28;;1131:1;1124:4;:8;1117:15;;;726:413;;;:::o;7091:725::-;7206:12;7234:7;7230:580;;;7264:10;7257:17;;;;7230:580;7395:1;7375:10;:17;:21;7371:429;;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;;;;;;;;;;:::i;:::-;;;;;;;;7091:725;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;5:134::-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;146:146::-;;234:6;221:20;212:29;;246:41;281:5;246:41;:::i;:::-;206:86;;;;:::o;331:713::-;;482:3;475:4;467:6;463:17;459:27;449:2;;500:1;497;490:12;449:2;524:4;543:103;558:87;638:6;558:87;:::i;:::-;543:103;:::i;:::-;534:112;;663:5;722:6;769:3;761:4;753:6;749:17;744:3;740:27;737:36;734:2;;;786:1;783;776:12;734:2;811:1;796:242;821:6;818:1;815:13;796:242;;;879:3;901:73;970:3;958:10;901:73;:::i;:::-;896:3;889:86;998:4;993:3;989:14;982:21;;1026:4;1021:3;1017:14;1010:21;;853:185;843:1;840;836:9;831:14;;796:242;;;800:14;442:602;;;;;;;:::o;1083:782::-;;1225:3;1218:4;1210:6;1206:17;1202:27;1192:2;;1243:1;1240;1233:12;1192:2;1280:6;1267:20;1302:105;1317:89;1399:6;1317:89;:::i;:::-;1302:105;:::i;:::-;1293:114;;1424:5;1449:6;1442:5;1435:21;1479:4;1471:6;1467:17;1457:27;;1501:4;1496:3;1492:14;1485:21;;1554:6;1601:3;1593:4;1585:6;1581:17;1576:3;1572:27;1569:36;1566:2;;;1618:1;1615;1608:12;1566:2;1643:1;1628:231;1653:6;1650:1;1647:13;1628:231;;;1711:3;1733:62;1791:3;1779:10;1733:62;:::i;:::-;1728:3;1721:75;1819:4;1814:3;1810:14;1803:21;;1847:4;1842:3;1838:14;1831:21;;1685:174;1675:1;1672;1668:9;1663:14;;1628:231;;;1632:14;1185:680;;;;;;;:::o;1904:797::-;;2057:3;2050:4;2042:6;2038:17;2034:27;2024:2;;2075:1;2072;2065:12;2024:2;2105:6;2099:13;2127:105;2142:89;2224:6;2142:89;:::i;:::-;2127:105;:::i;:::-;2118:114;;2249:5;2274:6;2267:5;2260:21;2304:4;2296:6;2292:17;2282:27;;2326:4;2321:3;2317:14;2310:21;;2379:6;2426:3;2418:4;2410:6;2406:17;2401:3;2397:27;2394:36;2391:2;;;2443:1;2440;2433:12;2391:2;2468:1;2453:242;2478:6;2475:1;2472:13;2453:242;;;2536:3;2558:73;2627:3;2615:10;2558:73;:::i;:::-;2553:3;2546:86;2655:4;2650:3;2646:14;2639:21;;2683:4;2678:3;2674:14;2667:21;;2510:185;2500:1;2497;2493:9;2488:14;;2453:242;;;2457:14;2017:684;;;;;;;:::o;2727:722::-;;2855:3;2848:4;2840:6;2836:17;2832:27;2822:2;;2873:1;2870;2863:12;2822:2;2903:6;2897:13;2925:80;2940:64;2997:6;2940:64;:::i;:::-;2925:80;:::i;:::-;2916:89;;3022:5;3047:6;3040:5;3033:21;3077:4;3069:6;3065:17;3055:27;;3099:4;3094:3;3090:14;3083:21;;3152:6;3199:3;3191:4;3183:6;3179:17;3174:3;3170:27;3167:36;3164:2;;;3216:1;3213;3206:12;3164:2;3241:1;3226:217;3251:6;3248:1;3245:13;3226:217;;;3309:3;3331:48;3375:3;3363:10;3331:48;:::i;:::-;3326:3;3319:61;3403:4;3398:3;3394:14;3387:21;;3431:4;3426:3;3422:14;3415:21;;3283:160;3273:1;3270;3266:9;3261:14;;3226:217;;;3230:14;2815:634;;;;;;;:::o;3457:128::-;;3538:6;3532:13;3523:22;;3550:30;3574:5;3550:30;:::i;:::-;3517:68;;;;:::o;3592:130::-;;3672:6;3659:20;3650:29;;3684:33;3711:5;3684:33;:::i;:::-;3644:78;;;;:::o;3729:134::-;;3813:6;3807:13;3798:22;;3825:33;3852:5;3825:33;:::i;:::-;3792:71;;;;:::o;3871:440::-;;3972:3;3965:4;3957:6;3953:17;3949:27;3939:2;;3990:1;3987;3980:12;3939:2;4027:6;4014:20;4049:64;4064:48;4105:6;4064:48;:::i;:::-;4049:64;:::i;:::-;4040:73;;4133:6;4126:5;4119:21;4169:4;4161:6;4157:17;4202:4;4195:5;4191:16;4237:3;4228:6;4223:3;4219:16;4216:25;4213:2;;;4254:1;4251;4244:12;4213:2;4264:41;4298:6;4293:3;4288;4264:41;:::i;:::-;3932:379;;;;;;;:::o;4346:461::-;;4460:4;4448:9;4443:3;4439:19;4435:30;4432:2;;;4478:1;4475;4468:12;4432:2;4496:20;4511:4;4496:20;:::i;:::-;4487:29;;4563:1;4595:49;4640:3;4631:6;4620:9;4616:22;4595:49;:::i;:::-;4588:4;4581:5;4577:16;4570:75;4526:130;4703:2;4736:49;4781:3;4772:6;4761:9;4757:22;4736:49;:::i;:::-;4729:4;4722:5;4718:16;4711:75;4666:131;4426:381;;;;:::o;4841:494::-;;4966:4;4954:9;4949:3;4945:19;4941:30;4938:2;;;4984:1;4981;4974:12;4938:2;5002:20;5017:4;5002:20;:::i;:::-;4993:29;;5069:1;5101:60;5157:3;5148:6;5137:9;5133:22;5101:60;:::i;:::-;5094:4;5087:5;5083:16;5076:86;5032:141;5220:2;5253:60;5309:3;5300:6;5289:9;5285:22;5253:60;:::i;:::-;5246:4;5239:5;5235:16;5228:86;5183:142;4932:403;;;;:::o;5368:1056::-;;5491:4;5479:9;5474:3;5470:19;5466:30;5463:2;;;5509:1;5506;5499:12;5463:2;5527:20;5542:4;5527:20;:::i;:::-;5518:29;;5616:1;5605:9;5601:17;5595:24;5639:18;5631:6;5628:30;5625:2;;;5671:1;5668;5661:12;5625:2;5706:110;5812:3;5803:6;5792:9;5788:22;5706:110;:::i;:::-;5699:4;5692:5;5688:16;5681:136;5557:271;5897:2;5886:9;5882:18;5876:25;5921:18;5913:6;5910:30;5907:2;;;5953:1;5950;5943:12;5907:2;5988:110;6094:3;6085:6;6074:9;6070:22;5988:110;:::i;:::-;5981:4;5974:5;5970:16;5963:136;5838:272;6157:2;6190:60;6246:3;6237:6;6226:9;6222:22;6190:60;:::i;:::-;6183:4;6176:5;6172:16;6165:86;6120:142;6309:2;6342:60;6398:3;6389:6;6378:9;6374:22;6342:60;:::i;:::-;6335:4;6328:5;6324:16;6317:86;6272:142;5457:967;;;;:::o;6461:1953::-;;6584:6;6572:9;6567:3;6563:19;6559:32;6556:2;;;6604:1;6601;6594:12;6556:2;6622:22;6637:6;6622:22;:::i;:::-;6613:31;;6692:1;6724:85;6805:3;6796:6;6785:9;6781:22;6724:85;:::i;:::-;6717:4;6710:5;6706:16;6699:111;6654:167;6869:2;6902:85;6983:3;6974:6;6963:9;6959:22;6902:85;:::i;:::-;6895:4;6888:5;6884:16;6877:111;6831:168;7053:3;7087:108;7191:3;7182:6;7171:9;7167:22;7087:108;:::i;:::-;7080:4;7073:5;7069:16;7062:134;7009:198;7257:3;7291:60;7347:3;7338:6;7327:9;7323:22;7291:60;:::i;:::-;7284:4;7277:5;7273:16;7266:86;7217:146;7411:3;7445:60;7501:3;7492:6;7481:9;7477:22;7445:60;:::i;:::-;7438:4;7431:5;7427:16;7420:86;7373:144;7564:3;7598:60;7654:3;7645:6;7634:9;7630:22;7598:60;:::i;:::-;7591:4;7584:5;7580:16;7573:86;7527:143;7720:3;7754:60;7810:3;7801:6;7790:9;7786:22;7754:60;:::i;:::-;7747:4;7740:5;7736:16;7729:86;7680:146;7875:3;7909:60;7965:3;7956:6;7945:9;7941:22;7909:60;:::i;:::-;7902:4;7895:5;7891:16;7884:86;7836:145;8032:3;8068:60;8124:3;8115:6;8104:9;8100:22;8068:60;:::i;:::-;8059:6;8052:5;8048:18;8041:88;7991:149;8215:3;8204:9;8200:19;8194:26;8240:18;8232:6;8229:30;8226:2;;;8272:1;8269;8262:12;8226:2;8309:83;8388:3;8379:6;8368:9;8364:22;8309:83;:::i;:::-;8300:6;8293:5;8289:18;8282:111;8150:254;6550:1864;;;;:::o;8453:5491::-;;8576:6;8564:9;8559:3;8555:19;8551:32;8548:2;;;8596:1;8593;8586:12;8548:2;8614:22;8629:6;8614:22;:::i;:::-;8605:31;;8684:1;8716:85;8797:3;8788:6;8777:9;8773:22;8716:85;:::i;:::-;8709:4;8702:5;8698:16;8691:111;8646:167;8861:2;8894:85;8975:3;8966:6;8955:9;8951:22;8894:85;:::i;:::-;8887:4;8880:5;8876:16;8869:111;8823:168;9038:3;9072:85;9153:3;9144:6;9133:9;9129:22;9072:85;:::i;:::-;9065:4;9058:5;9054:16;9047:111;9001:168;9216:3;9250:85;9331:3;9322:6;9311:9;9307:22;9250:85;:::i;:::-;9243:4;9236:5;9232:16;9225:111;9179:168;9418:3;9407:9;9403:19;9397:26;9443:18;9435:6;9432:30;9429:2;;;9475:1;9472;9465:12;9429:2;9510:110;9616:3;9607:6;9596:9;9592:22;9510:110;:::i;:::-;9503:4;9496:5;9492:16;9485:136;9357:275;9703:3;9692:9;9688:19;9682:26;9728:18;9720:6;9717:30;9714:2;;;9760:1;9757;9750:12;9714:2;9795:110;9901:3;9892:6;9881:9;9877:22;9795:110;:::i;:::-;9788:4;9781:5;9777:16;9770:136;9642:275;9988:3;9977:9;9973:19;9967:26;10013:18;10005:6;10002:30;9999:2;;;10045:1;10042;10035:12;9999:2;10080:110;10186:3;10177:6;10166:9;10162:22;10080:110;:::i;:::-;10073:4;10066:5;10062:16;10055:136;9927:275;10271:3;10260:9;10256:19;10250:26;10296:18;10288:6;10285:30;10282:2;;;10328:1;10325;10318:12;10282:2;10363:110;10469:3;10460:6;10449:9;10445:22;10363:110;:::i;:::-;10356:4;10349:5;10345:16;10338:136;10212:273;10556:3;10545:9;10541:19;10535:26;10581:18;10573:6;10570:30;10567:2;;;10613:1;10610;10603:12;10567:2;10650:110;10756:3;10747:6;10736:9;10732:22;10650:110;:::i;:::-;10641:6;10634:5;10630:18;10623:138;10495:277;10841:3;10830:9;10826:19;10820:26;10866:18;10858:6;10855:30;10852:2;;;10898:1;10895;10888:12;10852:2;10935:110;11041:3;11032:6;11021:9;11017:22;10935:110;:::i;:::-;10926:6;10919:5;10915:18;10908:138;10782:275;11128:3;11117:9;11113:19;11107:26;11153:18;11145:6;11142:30;11139:2;;;11185:1;11182;11175:12;11139:2;11222:110;11328:3;11319:6;11308:9;11304:22;11222:110;:::i;:::-;11213:6;11206:5;11202:18;11195:138;11067:277;11415:3;11404:9;11400:19;11394:26;11440:18;11432:6;11429:30;11426:2;;;11472:1;11469;11462:12;11426:2;11509:110;11615:3;11606:6;11595:9;11591:22;11509:110;:::i;:::-;11500:6;11493:5;11489:18;11482:138;11354:277;11699:3;11688:9;11684:19;11678:26;11724:18;11716:6;11713:30;11710:2;;;11756:1;11753;11746:12;11710:2;11793:85;11874:3;11865:6;11854:9;11850:22;11793:85;:::i;:::-;11784:6;11777:5;11773:18;11766:113;11641:249;11939:3;11975:60;12031:3;12022:6;12011:9;12007:22;11975:60;:::i;:::-;11966:6;11959:5;11955:18;11948:88;11900:147;12096:3;12132:60;12188:3;12179:6;12168:9;12164:22;12132:60;:::i;:::-;12123:6;12116:5;12112:18;12105:88;12057:147;12253:3;12289:60;12345:3;12336:6;12325:9;12321:22;12289:60;:::i;:::-;12280:6;12273:5;12269:18;12262:88;12214:147;12415:3;12451:108;12555:3;12546:6;12535:9;12531:22;12451:108;:::i;:::-;12442:6;12435:5;12431:18;12424:136;12371:200;12621:3;12657:60;12713:3;12704:6;12693:9;12689:22;12657:60;:::i;:::-;12648:6;12641:5;12637:18;12630:88;12581:148;12777:3;12813:60;12869:3;12860:6;12849:9;12845:22;12813:60;:::i;:::-;12804:6;12797:5;12793:18;12786:88;12739:146;12932:3;12968:60;13024:3;13015:6;13004:9;13000:22;12968:60;:::i;:::-;12959:6;12952:5;12948:18;12941:88;12895:145;13090:3;13126:60;13182:3;13173:6;13162:9;13158:22;13126:60;:::i;:::-;13117:6;13110:5;13106:18;13099:88;13050:148;13247:3;13283:60;13339:3;13330:6;13319:9;13315:22;13283:60;:::i;:::-;13274:6;13267:5;13263:18;13256:88;13208:147;13404:3;13440:60;13496:3;13487:6;13476:9;13472:22;13440:60;:::i;:::-;13431:6;13424:5;13420:18;13413:88;13365:147;13563:3;13599:60;13655:3;13646:6;13635:9;13631:22;13599:60;:::i;:::-;13590:6;13583:5;13579:18;13572:88;13522:149;13745:3;13734:9;13730:19;13724:26;13770:18;13762:6;13759:30;13756:2;;;13802:1;13799;13792:12;13756:2;13839:83;13918:3;13909:6;13898:9;13894:22;13839:83;:::i;:::-;13830:6;13823:5;13819:18;13812:111;13681:253;8542:5402;;;;:::o;13985:1226::-;;14112:6;14100:9;14095:3;14091:19;14087:32;14084:2;;;14132:1;14129;14122:12;14084:2;14150:20;14165:4;14150:20;:::i;:::-;14141:29;;14220:1;14252:85;14333:3;14324:6;14313:9;14309:22;14252:85;:::i;:::-;14245:4;14238:5;14234:16;14227:111;14180:169;14399:2;14432:85;14513:3;14504:6;14493:9;14489:22;14432:85;:::i;:::-;14425:4;14418:5;14414:16;14407:111;14359:170;14577:3;14611:85;14692:3;14683:6;14672:9;14668:22;14611:85;:::i;:::-;14604:4;14597:5;14593:16;14586:111;14539:169;14759:3;14793:60;14849:3;14840:6;14829:9;14825:22;14793:60;:::i;:::-;14786:4;14779:5;14775:16;14768:86;14718:147;14912:3;14946:85;15027:3;15018:6;15007:9;15003:22;14946:85;:::i;:::-;14939:4;14932:5;14928:16;14921:111;14875:168;15095:3;15129:60;15185:3;15176:6;15165:9;15161:22;15129:60;:::i;:::-;15122:4;15115:5;15111:16;15104:86;15053:148;14078:1133;;;;:::o;15254:1838::-;;15381:6;15369:9;15364:3;15360:19;15356:32;15353:2;;;15401:1;15398;15391:12;15353:2;15419:20;15434:4;15419:20;:::i;:::-;15410:29;;15510:1;15499:9;15495:17;15489:24;15533:18;15525:6;15522:30;15519:2;;;15565:1;15562;15555:12;15519:2;15600:110;15706:3;15697:6;15686:9;15682:22;15600:110;:::i;:::-;15593:4;15586:5;15582:16;15575:136;15449:273;15793:2;15782:9;15778:18;15772:25;15817:18;15809:6;15806:30;15803:2;;;15849:1;15846;15839:12;15803:2;15884:110;15990:3;15981:6;15970:9;15966:22;15884:110;:::i;:::-;15877:4;15870:5;15866:16;15859:136;15732:274;16074:2;16063:9;16059:18;16053:25;16098:18;16090:6;16087:30;16084:2;;;16130:1;16127;16120:12;16084:2;16165:110;16271:3;16262:6;16251:9;16247:22;16165:110;:::i;:::-;16158:4;16151:5;16147:16;16140:136;16016:271;16334:2;16367:85;16448:3;16439:6;16428:9;16424:22;16367:85;:::i;:::-;16360:4;16353:5;16349:16;16342:111;16297:167;16533:3;16522:9;16518:19;16512:26;16558:18;16550:6;16547:30;16544:2;;;16590:1;16587;16580:12;16544:2;16625:110;16731:3;16722:6;16711:9;16707:22;16625:110;:::i;:::-;16618:4;16611:5;16607:16;16600:136;16474:273;16798:3;16832:60;16888:3;16879:6;16868:9;16864:22;16832:60;:::i;:::-;16825:4;16818:5;16814:16;16807:86;16757:147;16951:3;16985:85;17066:3;17057:6;17046:9;17042:22;16985:85;:::i;:::-;16978:4;16971:5;16967:16;16960:111;16914:168;15347:1745;;;;:::o;17099:130::-;;17179:6;17166:20;17157:29;;17191:33;17218:5;17191:33;:::i;:::-;17151:78;;;;:::o;17236:134::-;;17320:6;17314:13;17305:22;;17332:33;17359:5;17332:33;:::i;:::-;17299:71;;;;:::o;17377:257::-;;17489:2;17477:9;17468:7;17464:23;17460:32;17457:2;;;17505:1;17502;17495:12;17457:2;17540:1;17557:61;17610:7;17601:6;17590:9;17586:22;17557:61;:::i;:::-;17547:71;;17519:105;17451:183;;;;:::o;17641:1320::-;;;;;;17972:3;17960:9;17951:7;17947:23;17943:33;17940:2;;;17989:1;17986;17979:12;17940:2;18052:1;18041:9;18037:17;18024:31;18075:18;18067:6;18064:30;18061:2;;;18107:1;18104;18097:12;18061:2;18127:103;18222:7;18213:6;18202:9;18198:22;18127:103;:::i;:::-;18117:113;;18003:233;18267:2;18285:78;18355:7;18346:6;18335:9;18331:22;18285:78;:::i;:::-;18275:88;;18246:123;18428:2;18417:9;18413:18;18400:32;18452:18;18444:6;18441:30;18438:2;;;18484:1;18481;18474:12;18438:2;18504:103;18599:7;18590:6;18579:9;18575:22;18504:103;:::i;:::-;18494:113;;18379:234;18644:3;18663:78;18733:7;18724:6;18713:9;18709:22;18663:78;:::i;:::-;18653:88;;18623:124;18806:3;18795:9;18791:19;18778:33;18831:18;18823:6;18820:30;18817:2;;;18863:1;18860;18853:12;18817:2;18883:62;18937:7;18928:6;18917:9;18913:22;18883:62;:::i;:::-;18873:72;;18757:194;17934:1027;;;;;;;;:::o;18968:552::-;;;19139:2;19127:9;19118:7;19114:23;19110:32;19107:2;;;19155:1;19152;19145:12;19107:2;19218:1;19207:9;19203:17;19190:31;19241:18;19233:6;19230:30;19227:2;;;19273:1;19270;19263:12;19227:2;19293:103;19388:7;19379:6;19368:9;19364:22;19293:103;:::i;:::-;19283:113;;19169:233;19433:2;19451:53;19496:7;19487:6;19476:9;19472:22;19451:53;:::i;:::-;19441:63;;19412:98;19101:419;;;;;:::o;19527:257::-;;19639:2;19627:9;19618:7;19614:23;19610:32;19607:2;;;19655:1;19652;19645:12;19607:2;19690:1;19707:61;19760:7;19751:6;19740:9;19736:22;19707:61;:::i;:::-;19697:71;;19669:105;19601:183;;;;:::o;19791:241::-;;19895:2;19883:9;19874:7;19870:23;19866:32;19863:2;;;19911:1;19908;19901:12;19863:2;19946:1;19963:53;20008:7;19999:6;19988:9;19984:22;19963:53;:::i;:::-;19953:63;;19925:97;19857:175;;;;:::o;20039:291::-;;20168:2;20156:9;20147:7;20143:23;20139:32;20136:2;;;20184:1;20181;20174:12;20136:2;20219:1;20236:78;20306:7;20297:6;20286:9;20282:22;20236:78;:::i;:::-;20226:88;;20198:122;20130:200;;;;:::o;20337:646::-;;;;20509:3;20497:9;20488:7;20484:23;20480:33;20477:2;;;20526:1;20523;20516:12;20477:2;20561:1;20578:78;20648:7;20639:6;20628:9;20624:22;20578:78;:::i;:::-;20568:88;;20540:122;20693:2;20711:53;20756:7;20747:6;20736:9;20732:22;20711:53;:::i;:::-;20701:63;;20672:98;20829:2;20818:9;20814:18;20801:32;20853:18;20845:6;20842:30;20839:2;;;20885:1;20882;20875:12;20839:2;20905:62;20959:7;20950:6;20939:9;20935:22;20905:62;:::i;:::-;20895:72;;20780:193;20471:512;;;;;:::o;20990:1052::-;;;;;;21230:3;21218:9;21209:7;21205:23;21201:33;21198:2;;;21247:1;21244;21237:12;21198:2;21282:1;21299:78;21369:7;21360:6;21349:9;21345:22;21299:78;:::i;:::-;21289:88;;21261:122;21414:2;21432:53;21477:7;21468:6;21457:9;21453:22;21432:53;:::i;:::-;21422:63;;21393:98;21522:2;21540:78;21610:7;21601:6;21590:9;21586:22;21540:78;:::i;:::-;21530:88;;21501:123;21683:3;21672:9;21668:19;21655:33;21708:18;21700:6;21697:30;21694:2;;;21740:1;21737;21730:12;21694:2;21760:62;21814:7;21805:6;21794:9;21790:22;21760:62;:::i;:::-;21750:72;;21634:194;21887:3;21876:9;21872:19;21859:33;21912:18;21904:6;21901:30;21898:2;;;21944:1;21941;21934:12;21898:2;21964:62;22018:7;22009:6;21998:9;21994:22;21964:62;:::i;:::-;21954:72;;21838:194;21192:850;;;;;;;;:::o;22049:542::-;;;;22212:3;22200:9;22191:7;22187:23;22183:33;22180:2;;;22229:1;22226;22219:12;22180:2;22264:1;22281:78;22351:7;22342:6;22331:9;22327:22;22281:78;:::i;:::-;22271:88;;22243:122;22396:2;22414:53;22459:7;22450:6;22439:9;22435:22;22414:53;:::i;:::-;22404:63;;22375:98;22504:2;22522:53;22567:7;22558:6;22547:9;22543:22;22522:53;:::i;:::-;22512:63;;22483:98;22174:417;;;;;:::o;22598:388::-;;22736:2;22724:9;22715:7;22711:23;22707:32;22704:2;;;22752:1;22749;22742:12;22704:2;22808:1;22797:9;22793:17;22787:24;22831:18;22823:6;22820:30;22817:2;;;22863:1;22860;22853:12;22817:2;22883:87;22962:7;22953:6;22942:9;22938:22;22883:87;:::i;:::-;22873:97;;22766:210;22698:288;;;;:::o;22993:388::-;;23131:2;23119:9;23110:7;23106:23;23102:32;23099:2;;;23147:1;23144;23137:12;23099:2;23203:1;23192:9;23188:17;23182:24;23226:18;23218:6;23215:30;23212:2;;;23258:1;23255;23248:12;23212:2;23278:87;23357:7;23348:6;23337:9;23333:22;23278:87;:::i;:::-;23268:97;;23161:210;23093:288;;;;:::o;23388:318::-;;23530:3;23518:9;23509:7;23505:23;23501:33;23498:2;;;23547:1;23544;23537:12;23498:2;23582:1;23599:91;23682:7;23673:6;23662:9;23658:22;23599:91;:::i;:::-;23589:101;;23561:135;23492:214;;;;:::o;23713:396::-;;23855:2;23843:9;23834:7;23830:23;23826:32;23823:2;;;23871:1;23868;23861:12;23823:2;23927:1;23916:9;23912:17;23906:24;23950:18;23942:6;23939:30;23936:2;;;23982:1;23979;23972:12;23936:2;24002:91;24085:7;24076:6;24065:9;24061:22;24002:91;:::i;:::-;23992:101;;23885:214;23817:292;;;;:::o;24116:241::-;;24220:2;24208:9;24199:7;24195:23;24191:32;24188:2;;;24236:1;24233;24226:12;24188:2;24271:1;24288:53;24333:7;24324:6;24313:9;24309:22;24288:53;:::i;:::-;24278:63;;24250:97;24182:175;;;;:::o;24364:366::-;;;24485:2;24473:9;24464:7;24460:23;24456:32;24453:2;;;24501:1;24498;24491:12;24453:2;24536:1;24553:53;24598:7;24589:6;24578:9;24574:22;24553:53;:::i;:::-;24543:63;;24515:97;24643:2;24661:53;24706:7;24697:6;24686:9;24682:22;24661:53;:::i;:::-;24651:63;;24622:98;24447:283;;;;;:::o;24738:365::-;;24921:142;25059:3;25051:6;24921:142;:::i;:::-;25092:4;25087:3;25083:14;25069:28;;24914:189;;;;:::o;25112:273::-;;25249:96;25341:3;25333:6;25249:96;:::i;:::-;25374:4;25369:3;25365:14;25351:28;;25242:143;;;;:::o;25394:173::-;;25481:46;25523:3;25515:6;25481:46;:::i;:::-;25556:4;25551:3;25547:14;25533:28;;25474:93;;;;:::o;25575:142::-;25666:45;25705:5;25666:45;:::i;:::-;25661:3;25654:58;25648:69;;:::o;25724:137::-;25823:32;25849:5;25823:32;:::i;:::-;25818:3;25811:45;25805:56;;:::o;25868:103::-;25941:24;25959:5;25941:24;:::i;:::-;25936:3;25929:37;25923:48;;:::o;25978:113::-;26061:24;26079:5;26061:24;:::i;:::-;26056:3;26049:37;26043:48;;:::o;26161:1074::-;;26402:102;26498:5;26402:102;:::i;:::-;26517:134;26644:6;26639:3;26517:134;:::i;:::-;26510:141;;26672:104;26770:5;26672:104;:::i;:::-;26796:7;26824:1;26809:404;26834:6;26831:1;26828:13;26809:404;;;26901:6;26895:13;26922:159;27077:3;27062:13;26922:159;:::i;:::-;26915:166;;27098:108;27199:6;27098:108;:::i;:::-;27088:118;;26866:347;26856:1;26853;26849:9;26844:14;;26809:404;;;26813:14;27226:3;27219:10;;26381:854;;;;;;;:::o;27302:840::-;27475:77;27546:5;27475:77;:::i;:::-;27565:99;27657:6;27652:3;27565:99;:::i;:::-;27558:106;;27685:79;27758:5;27685:79;:::i;:::-;27784:7;27812:1;27797:333;27822:6;27819:1;27816:13;27797:333;;;27889:6;27883:13;27910:113;28019:3;28004:13;27910:113;:::i;:::-;27903:120;;28040:83;28116:6;28040:83;:::i;:::-;28030:93;;27854:276;27844:1;27841;27837:9;27832:14;;27797:333;;;27801:14;27454:688;;;;;:::o;28209:860::-;28392:77;28463:5;28392:77;:::i;:::-;28482:109;28584:6;28579:3;28482:109;:::i;:::-;28475:116;;28612:79;28685:5;28612:79;:::i;:::-;28711:7;28739:1;28724:333;28749:6;28746:1;28743:13;28724:333;;;28816:6;28810:13;28837:113;28946:3;28931:13;28837:113;:::i;:::-;28830:120;;28967:83;29043:6;28967:83;:::i;:::-;28957:93;;28781:276;28771:1;28768;28764:9;28759:14;;28724:333;;;28728:14;28371:698;;;;;:::o;29134:870::-;;29319:79;29392:5;29319:79;:::i;:::-;29411:101;29505:6;29500:3;29411:101;:::i;:::-;29404:108;;29533:81;29608:5;29533:81;:::i;:::-;29634:7;29662:1;29647:335;29672:6;29669:1;29666:13;29647:335;;;29739:6;29733:13;29760:113;29869:3;29854:13;29760:113;:::i;:::-;29753:120;;29890:85;29968:6;29890:85;:::i;:::-;29880:95;;29704:278;29694:1;29691;29687:9;29682:14;;29647:335;;;29651:14;29995:3;29988:10;;29298:706;;;;;;;:::o;30069:890::-;;30264:79;30337:5;30264:79;:::i;:::-;30356:111;30460:6;30455:3;30356:111;:::i;:::-;30349:118;;30488:81;30563:5;30488:81;:::i;:::-;30589:7;30617:1;30602:335;30627:6;30624:1;30621:13;30602:335;;;30694:6;30688:13;30715:113;30824:3;30809:13;30715:113;:::i;:::-;30708:120;;30845:85;30923:6;30845:85;:::i;:::-;30835:95;;30659:278;30649:1;30646;30642:9;30637:14;;30602:335;;;30606:14;30950:3;30943:10;;30243:716;;;;;;;:::o;30998:670::-;;31133:54;31181:5;31133:54;:::i;:::-;31200:76;31269:6;31264:3;31200:76;:::i;:::-;31193:83;;31297:56;31347:5;31297:56;:::i;:::-;31373:7;31401:1;31386:260;31411:6;31408:1;31405:13;31386:260;;;31478:6;31472:13;31499:63;31558:3;31543:13;31499:63;:::i;:::-;31492:70;;31579:60;31632:6;31579:60;:::i;:::-;31569:70;;31443:203;31433:1;31430;31426:9;31421:14;;31386:260;;;31390:14;31659:3;31652:10;;31112:556;;;;;;;:::o;31676:104::-;31753:21;31768:5;31753:21;:::i;:::-;31748:3;31741:34;31735:45;;:::o;31787:103::-;31860:24;31878:5;31860:24;:::i;:::-;31855:3;31848:37;31842:48;;:::o;31897:343::-;;32007:38;32039:5;32007:38;:::i;:::-;32057:70;32120:6;32115:3;32057:70;:::i;:::-;32050:77;;32132:52;32177:6;32172:3;32165:4;32158:5;32154:16;32132:52;:::i;:::-;32205:29;32227:6;32205:29;:::i;:::-;32200:3;32196:39;32189:46;;31987:253;;;;;:::o;32247:356::-;;32375:38;32407:5;32375:38;:::i;:::-;32425:88;32506:6;32501:3;32425:88;:::i;:::-;32418:95;;32518:52;32563:6;32558:3;32551:4;32544:5;32540:16;32518:52;:::i;:::-;32591:6;32586:3;32582:16;32575:23;;32355:248;;;;;:::o;32610:347::-;;32722:39;32755:5;32722:39;:::i;:::-;32773:71;32837:6;32832:3;32773:71;:::i;:::-;32766:78;;32849:52;32894:6;32889:3;32882:4;32875:5;32871:16;32849:52;:::i;:::-;32922:29;32944:6;32922:29;:::i;:::-;32917:3;32913:39;32906:46;;32702:255;;;;;:::o;32965:381::-;;33125:67;33189:2;33184:3;33125:67;:::i;:::-;33118:74;;33225:34;33221:1;33216:3;33212:11;33205:55;33294:14;33289:2;33284:3;33280:12;33273:36;33337:2;33332:3;33328:12;33321:19;;33111:235;;;:::o;33355:381::-;;33515:67;33579:2;33574:3;33515:67;:::i;:::-;33508:74;;33615:34;33611:1;33606:3;33602:11;33595:55;33684:14;33679:2;33674:3;33670:12;33663:36;33727:2;33722:3;33718:12;33711:19;;33501:235;;;:::o;33745:373::-;;33905:67;33969:2;33964:3;33905:67;:::i;:::-;33898:74;;34005:34;34001:1;33996:3;33992:11;33985:55;34074:6;34069:2;34064:3;34060:12;34053:28;34109:2;34104:3;34100:12;34093:19;;33891:227;;;:::o;34127:389::-;;34287:67;34351:2;34346:3;34287:67;:::i;:::-;34280:74;;34387:34;34383:1;34378:3;34374:11;34367:55;34456:22;34451:2;34446:3;34442:12;34435:44;34507:2;34502:3;34498:12;34491:19;;34273:243;;;:::o;34525:389::-;;34685:67;34749:2;34744:3;34685:67;:::i;:::-;34678:74;;34785:34;34781:1;34776:3;34772:11;34765:55;34854:22;34849:2;34844:3;34840:12;34833:44;34905:2;34900:3;34896:12;34889:19;;34671:243;;;:::o;34923:385::-;;35083:67;35147:2;35142:3;35083:67;:::i;:::-;35076:74;;35183:34;35179:1;35174:3;35170:11;35163:55;35252:18;35247:2;35242:3;35238:12;35231:40;35299:2;35294:3;35290:12;35283:19;;35069:239;;;:::o;35317:327::-;;35477:67;35541:2;35536:3;35477:67;:::i;:::-;35470:74;;35577:29;35573:1;35568:3;35564:11;35557:50;35635:2;35630:3;35626:12;35619:19;;35463:181;;;:::o;35653:440::-;;35813:67;35877:2;35872:3;35813:67;:::i;:::-;35806:74;;35913:34;35909:1;35904:3;35900:11;35893:55;35982:34;35977:2;35972:3;35968:12;35961:56;36051:4;36046:2;36041:3;36037:12;36030:26;36084:2;36079:3;36075:12;36068:19;;35799:294;;;:::o;36102:376::-;;36262:67;36326:2;36321:3;36262:67;:::i;:::-;36255:74;;36362:34;36358:1;36353:3;36349:11;36342:55;36431:9;36426:2;36421:3;36417:12;36410:31;36469:2;36464:3;36460:12;36453:19;;36248:230;;;:::o;36487:375::-;;36647:67;36711:2;36706:3;36647:67;:::i;:::-;36640:74;;36747:34;36743:1;36738:3;36734:11;36727:55;36816:8;36811:2;36806:3;36802:12;36795:30;36853:2;36848:3;36844:12;36837:19;;36633:229;;;:::o;36871:378::-;;37031:67;37095:2;37090:3;37031:67;:::i;:::-;37024:74;;37131:34;37127:1;37122:3;37118:11;37111:55;37200:11;37195:2;37190:3;37186:12;37179:33;37240:2;37235:3;37231:12;37224:19;;37017:232;;;:::o;37258:380::-;;37418:67;37482:2;37477:3;37418:67;:::i;:::-;37411:74;;37518:34;37514:1;37509:3;37505:11;37498:55;37587:13;37582:2;37577:3;37573:12;37566:35;37629:2;37624:3;37620:12;37613:19;;37404:234;;;:::o;37647:331::-;;37807:67;37871:2;37866:3;37807:67;:::i;:::-;37800:74;;37907:33;37903:1;37898:3;37894:11;37887:54;37969:2;37964:3;37960:12;37953:19;;37793:185;;;:::o;37987:383::-;;38147:67;38211:2;38206:3;38147:67;:::i;:::-;38140:74;;38247:34;38243:1;38238:3;38234:11;38227:55;38316:16;38311:2;38306:3;38302:12;38295:38;38361:2;38356:3;38352:12;38345:19;;38133:237;;;:::o;38379:372::-;;38539:67;38603:2;38598:3;38539:67;:::i;:::-;38532:74;;38639:34;38635:1;38630:3;38626:11;38619:55;38708:5;38703:2;38698:3;38694:12;38687:27;38742:2;38737:3;38733:12;38726:19;;38525:226;;;:::o;38760:400::-;;38920:67;38984:2;38979:3;38920:67;:::i;:::-;38913:74;;39020:34;39016:1;39011:3;39007:11;39000:55;39089:33;39084:2;39079:3;39075:12;39068:55;39151:2;39146:3;39142:12;39135:19;;38906:254;;;:::o;39169:319::-;;39329:67;39393:2;39388:3;39329:67;:::i;:::-;39322:74;;39429:21;39425:1;39420:3;39416:11;39409:42;39479:2;39474:3;39470:12;39463:19;;39315:173;;;:::o;39497:398::-;;39657:67;39721:2;39716:3;39657:67;:::i;:::-;39650:74;;39757:34;39753:1;39748:3;39744:11;39737:55;39826:31;39821:2;39816:3;39812:12;39805:53;39886:2;39881:3;39877:12;39870:19;;39643:252;;;:::o;39904:391::-;;40064:67;40128:2;40123:3;40064:67;:::i;:::-;40057:74;;40164:34;40160:1;40155:3;40151:11;40144:55;40233:24;40228:2;40223:3;40219:12;40212:46;40286:2;40281:3;40277:12;40270:19;;40050:245;;;:::o;40304:329::-;;40464:67;40528:2;40523:3;40464:67;:::i;:::-;40457:74;;40564:31;40560:1;40555:3;40551:11;40544:52;40624:2;40619:3;40615:12;40608:19;;40450:183;;;:::o;40642:319::-;;40802:67;40866:2;40861:3;40802:67;:::i;:::-;40795:74;;40902:21;40898:1;40893:3;40889:11;40882:42;40952:2;40947:3;40943:12;40936:19;;40788:173;;;:::o;40970:370::-;;41130:67;41194:2;41189:3;41130:67;:::i;:::-;41123:74;;41230:34;41226:1;41221:3;41217:11;41210:55;41299:3;41294:2;41289:3;41285:12;41278:25;41331:2;41326:3;41322:12;41315:19;;41116:224;;;:::o;41349:379::-;;41509:67;41573:2;41568:3;41509:67;:::i;:::-;41502:74;;41609:34;41605:1;41600:3;41596:11;41589:55;41678:12;41673:2;41668:3;41664:12;41657:34;41719:2;41714:3;41710:12;41703:19;;41495:233;;;:::o;41737:372::-;;41897:67;41961:2;41956:3;41897:67;:::i;:::-;41890:74;;41997:34;41993:1;41988:3;41984:11;41977:55;42066:5;42061:2;42056:3;42052:12;42045:27;42100:2;42095:3;42091:12;42084:19;;41883:226;;;:::o;42168:460::-;42301:4;42296:3;42292:14;42381:4;42374:5;42370:16;42364:23;42393:63;42450:4;42445:3;42441:14;42427:12;42393:63;:::i;:::-;42321:141;42532:4;42525:5;42521:16;42515:23;42544:63;42601:4;42596:3;42592:14;42578:12;42544:63;:::i;:::-;42472:141;42274:354;;;:::o;42686:470::-;42829:4;42824:3;42820:14;42909:4;42902:5;42898:16;42892:23;42921:63;42978:4;42973:3;42969:14;42955:12;42921:63;:::i;:::-;42849:141;43060:4;43053:5;43049:16;43043:23;43072:63;43129:4;43124:3;43120:14;43106:12;43072:63;:::i;:::-;43000:141;42802:354;;;:::o;43212:1091::-;;43349:4;43344:3;43340:14;43430:4;43423:5;43419:16;43413:23;43482:3;43476:4;43472:14;43465:4;43460:3;43456:14;43449:38;43502:153;43650:4;43636:12;43502:153;:::i;:::-;43494:161;;43369:298;43738:4;43731:5;43727:16;43721:23;43790:3;43784:4;43780:14;43773:4;43768:3;43764:14;43757:38;43810:153;43958:4;43944:12;43810:153;:::i;:::-;43802:161;;43677:298;44045:4;44038:5;44034:16;44028:23;44057:63;44114:4;44109:3;44105:14;44091:12;44057:63;:::i;:::-;43985:141;44196:4;44189:5;44185:16;44179:23;44208:63;44265:4;44260:3;44256:14;44242:12;44208:63;:::i;:::-;44136:141;44294:4;44287:11;;43322:981;;;;;:::o;44367:2040::-;;44514:6;44509:3;44505:16;44597:4;44590:5;44586:16;44580:23;44609:113;44716:4;44711:3;44707:14;44693:12;44609:113;:::i;:::-;44536:192;44799:4;44792:5;44788:16;44782:23;44811:113;44918:4;44913:3;44909:14;44895:12;44811:113;:::i;:::-;44738:192;45007:4;45000:5;44996:16;44990:23;45019:159;45172:4;45167:3;45163:14;45149:12;45019:159;:::i;:::-;44940:244;45257:4;45250:5;45246:16;45240:23;45269:65;45326:6;45321:3;45317:16;45303:12;45269:65;:::i;:::-;45194:146;45411:4;45404:5;45400:16;45394:23;45423:65;45480:6;45475:3;45471:16;45457:12;45423:65;:::i;:::-;45350:144;45564:4;45557:5;45553:16;45547:23;45576:65;45633:6;45628:3;45624:16;45610:12;45576:65;:::i;:::-;45504:143;45720:4;45713:5;45709:16;45703:23;45732:65;45789:6;45784:3;45780:16;45766:12;45732:65;:::i;:::-;45657:146;45875:4;45868:5;45864:16;45858:23;45887:65;45944:6;45939:3;45935:16;45921:12;45887:65;:::i;:::-;45813:145;46032:6;46025:5;46021:18;46015:25;46046:65;46103:6;46098:3;46094:16;46080:12;46046:65;:::i;:::-;45968:149;46194:6;46187:5;46183:18;46177:25;46250:3;46244:4;46240:14;46231:6;46226:3;46222:16;46215:40;46270:99;46364:4;46350:12;46270:99;:::i;:::-;46262:107;;46127:254;46398:4;46391:11;;44487:1920;;;;;:::o;46475:5844::-;;46622:6;46617:3;46613:16;46705:4;46698:5;46694:16;46688:23;46717:113;46824:4;46819:3;46815:14;46801:12;46717:113;:::i;:::-;46644:192;46907:4;46900:5;46896:16;46890:23;46919:113;47026:4;47021:3;47017:14;47003:12;46919:113;:::i;:::-;46846:192;47108:4;47101:5;47097:16;47091:23;47120:113;47227:4;47222:3;47218:14;47204:12;47120:113;:::i;:::-;47048:191;47309:4;47302:5;47298:16;47292:23;47321:113;47428:4;47423:3;47419:14;47405:12;47321:113;:::i;:::-;47249:191;47513:4;47506:5;47502:16;47496:23;47567:3;47561:4;47557:14;47548:6;47543:3;47539:16;47532:40;47587:153;47735:4;47721:12;47587:153;:::i;:::-;47579:161;;47450:302;47825:4;47818:5;47814:16;47808:23;47879:3;47873:4;47869:14;47860:6;47855:3;47851:16;47844:40;47899:153;48047:4;48033:12;47899:153;:::i;:::-;47891:161;;47762:302;48137:4;48130:5;48126:16;48120:23;48191:3;48185:4;48181:14;48172:6;48167:3;48163:16;48156:40;48211:153;48359:4;48345:12;48211:153;:::i;:::-;48203:161;;48074:302;48447:4;48440:5;48436:16;48430:23;48501:3;48495:4;48491:14;48482:6;48477:3;48473:16;48466:40;48521:153;48669:4;48655:12;48521:153;:::i;:::-;48513:161;;48386:300;48759:6;48752:5;48748:18;48742:25;48815:3;48809:4;48805:14;48796:6;48791:3;48787:16;48780:40;48835:153;48983:4;48969:12;48835:153;:::i;:::-;48827:161;;48696:304;49071:6;49064:5;49060:18;49054:25;49127:3;49121:4;49117:14;49108:6;49103:3;49099:16;49092:40;49147:153;49295:4;49281:12;49147:153;:::i;:::-;49139:161;;49010:302;49385:6;49378:5;49374:18;49368:25;49441:3;49435:4;49431:14;49422:6;49417:3;49413:16;49406:40;49461:153;49609:4;49595:12;49461:153;:::i;:::-;49453:161;;49322:304;49699:6;49692:5;49688:18;49682:25;49755:3;49749:4;49745:14;49736:6;49731:3;49727:16;49720:40;49775:153;49923:4;49909:12;49775:153;:::i;:::-;49767:161;;49636:304;50010:6;50003:5;49999:18;49993:25;50066:3;50060:4;50056:14;50047:6;50042:3;50038:16;50031:40;50086:103;50184:4;50170:12;50086:103;:::i;:::-;50078:111;;49950:251;50273:6;50266:5;50262:18;50256:25;50287:65;50344:6;50339:3;50335:16;50321:12;50287:65;:::i;:::-;50211:147;50430:6;50423:5;50419:18;50413:25;50444:65;50501:6;50496:3;50492:16;50478:12;50444:65;:::i;:::-;50368:147;50587:6;50580:5;50576:18;50570:25;50601:65;50658:6;50653:3;50649:16;50635:12;50601:65;:::i;:::-;50525:147;50749:6;50742:5;50738:18;50732:25;50763:161;50916:6;50911:3;50907:16;50893:12;50763:161;:::i;:::-;50682:248;51003:6;50996:5;50992:18;50986:25;51017:65;51074:6;51069:3;51065:16;51051:12;51017:65;:::i;:::-;50940:148;51159:6;51152:5;51148:18;51142:25;51173:65;51230:6;51225:3;51221:16;51207:12;51173:65;:::i;:::-;51098:146;51314:6;51307:5;51303:18;51297:25;51328:65;51385:6;51380:3;51376:16;51362:12;51328:65;:::i;:::-;51254:145;51472:6;51465:5;51461:18;51455:25;51486:65;51543:6;51538:3;51534:16;51520:12;51486:65;:::i;:::-;51409:148;51629:6;51622:5;51618:18;51612:25;51643:65;51700:6;51695:3;51691:16;51677:12;51643:65;:::i;:::-;51567:147;51786:6;51779:5;51775:18;51769:25;51800:65;51857:6;51852:3;51848:16;51834:12;51800:65;:::i;:::-;51724:147;51945:6;51938:5;51934:18;51928:25;51959:65;52016:6;52011:3;52007:16;51993:12;51959:65;:::i;:::-;51881:149;52106:6;52099:5;52095:18;52089:25;52162:3;52156:4;52152:14;52143:6;52138:3;52134:16;52127:40;52182:99;52276:4;52262:12;52182:99;:::i;:::-;52174:107;;52040:253;52310:4;52303:11;;46595:5724;;;;;:::o;52391:1298::-;52538:6;52533:3;52529:16;52623:4;52616:5;52612:16;52606:23;52635:113;52742:4;52737:3;52733:14;52719:12;52635:113;:::i;:::-;52560:194;52827:4;52820:5;52816:16;52810:23;52839:113;52946:4;52941:3;52937:14;52923:12;52839:113;:::i;:::-;52764:194;53029:4;53022:5;53018:16;53012:23;53041:113;53148:4;53143:3;53139:14;53125:12;53041:113;:::i;:::-;52968:192;53234:4;53227:5;53223:16;53217:23;53246:63;53303:4;53298:3;53294:14;53280:12;53246:63;:::i;:::-;53170:145;53385:4;53378:5;53374:16;53368:23;53397:113;53504:4;53499:3;53495:14;53481:12;53397:113;:::i;:::-;53325:191;53591:4;53584:5;53580:16;53574:23;53603:65;53660:6;53655:3;53651:16;53637:12;53603:65;:::i;:::-;53526:148;52511:1178;;;:::o;53765:1985::-;;53920:6;53915:3;53911:16;54005:4;53998:5;53994:16;53988:23;54057:3;54051:4;54047:14;54040:4;54035:3;54031:14;54024:38;54077:153;54225:4;54211:12;54077:153;:::i;:::-;54069:161;;53942:300;54315:4;54308:5;54304:16;54298:23;54367:3;54361:4;54357:14;54350:4;54345:3;54341:14;54334:38;54387:153;54535:4;54521:12;54387:153;:::i;:::-;54379:161;;54252:300;54622:4;54615:5;54611:16;54605:23;54674:3;54668:4;54664:14;54657:4;54652:3;54648:14;54641:38;54694:153;54842:4;54828:12;54694:153;:::i;:::-;54686:161;;54562:297;54929:4;54922:5;54918:16;54912:23;54941:113;55048:4;55043:3;55039:14;55025:12;54941:113;:::i;:::-;54869:191;55131:4;55124:5;55120:16;55114:23;55183:3;55177:4;55173:14;55166:4;55161:3;55157:14;55150:38;55203:153;55351:4;55337:12;55203:153;:::i;:::-;55195:161;;55070:298;55442:4;55435:5;55431:16;55425:23;55454:63;55511:4;55506:3;55502:14;55488:12;55454:63;:::i;:::-;55378:145;55593:4;55586:5;55582:16;55576:23;55605:113;55712:4;55707:3;55703:14;55689:12;55605:113;:::i;:::-;55533:191;55741:4;55734:11;;53893:1857;;;;;:::o;55757:103::-;55830:24;55848:5;55830:24;:::i;:::-;55825:3;55818:37;55812:48;;:::o;55867:113::-;55950:24;55968:5;55950:24;:::i;:::-;55945:3;55938:37;55932:48;;:::o;55987:271::-;;56140:93;56229:3;56220:6;56140:93;:::i;:::-;56133:100;;56250:3;56243:10;;56121:137;;;;:::o;56265:254::-;;56408:2;56397:9;56393:18;56385:26;;56422:87;56506:1;56495:9;56491:17;56482:6;56422:87;:::i;:::-;56379:140;;;;:::o;56526:444::-;;56709:2;56698:9;56694:18;56686:26;;56723:71;56791:1;56780:9;56776:17;56767:6;56723:71;:::i;:::-;56805:72;56873:2;56862:9;56858:18;56849:6;56805:72;:::i;:::-;56888;56956:2;56945:9;56941:18;56932:6;56888:72;:::i;:::-;56680:290;;;;;;:::o;56977:645::-;;57260:3;57249:9;57245:19;57237:27;;57275:71;57343:1;57332:9;57328:17;57319:6;57275:71;:::i;:::-;57357:122;57475:2;57464:9;57460:18;57451:6;57357:122;:::i;:::-;57490;57608:2;57597:9;57593:18;57584:6;57490:122;:::i;:::-;57231:391;;;;;;:::o;57629:333::-;;57784:2;57773:9;57769:18;57761:26;;57798:71;57866:1;57855:9;57851:17;57842:6;57798:71;:::i;:::-;57880:72;57948:2;57937:9;57933:18;57924:6;57880:72;:::i;:::-;57755:207;;;;;:::o;57969:562::-;;58242:2;58231:9;58227:18;58219:26;;58292:9;58286:4;58282:20;58278:1;58267:9;58263:17;58256:47;58317:204;58516:4;58507:6;58317:204;:::i;:::-;58309:212;;58213:318;;;;:::o;58538:719::-;;58885:3;58874:9;58870:19;58862:27;;58900:167;59064:1;59053:9;59049:17;59040:6;58900:167;:::i;:::-;59078:169;59242:3;59231:9;59227:19;59218:6;59078:169;:::i;:::-;58856:401;;;;;:::o;59264:470::-;;59491:2;59480:9;59476:18;59468:26;;59541:9;59535:4;59531:20;59527:1;59516:9;59512:17;59505:47;59566:158;59719:4;59710:6;59566:158;:::i;:::-;59558:166;;59462:272;;;;:::o;59741:2084::-;;60536:3;60525:9;60521:19;60513:27;;60587:9;60581:4;60577:20;60573:1;60562:9;60558:17;60551:47;60612:158;60765:4;60756:6;60612:158;:::i;:::-;60604:166;;60818:9;60812:4;60808:20;60803:2;60792:9;60788:18;60781:48;60843:158;60996:4;60987:6;60843:158;:::i;:::-;60835:166;;61049:9;61043:4;61039:20;61034:2;61023:9;61019:18;61012:48;61074:158;61227:4;61218:6;61074:158;:::i;:::-;61066:166;;61243:122;61361:2;61350:9;61346:18;61337:6;61243:122;:::i;:::-;61414:9;61408:4;61404:20;61398:3;61387:9;61383:19;61376:49;61439:158;61592:4;61583:6;61439:158;:::i;:::-;61431:166;;61608:73;61676:3;61665:9;61661:19;61652:6;61608:73;:::i;:::-;61692:123;61810:3;61799:9;61795:19;61786:6;61692:123;:::i;:::-;60507:1318;;;;;;;;;;:::o;61832:210::-;;61953:2;61942:9;61938:18;61930:26;;61967:65;62029:1;62018:9;62014:17;62005:6;61967:65;:::i;:::-;61924:118;;;;:::o;62049:306::-;;62194:2;62183:9;62179:18;62171:26;;62244:9;62238:4;62234:20;62230:1;62219:9;62215:17;62208:47;62269:76;62340:4;62331:6;62269:76;:::i;:::-;62261:84;;62165:190;;;;:::o;62362:310::-;;62509:2;62498:9;62494:18;62486:26;;62559:9;62553:4;62549:20;62545:1;62534:9;62530:17;62523:47;62584:78;62657:4;62648:6;62584:78;:::i;:::-;62576:86;;62480:192;;;;:::o;62679:416::-;;62879:2;62868:9;62864:18;62856:26;;62929:9;62923:4;62919:20;62915:1;62904:9;62900:17;62893:47;62954:131;63080:4;62954:131;:::i;:::-;62946:139;;62850:245;;;:::o;63102:416::-;;63302:2;63291:9;63287:18;63279:26;;63352:9;63346:4;63342:20;63338:1;63327:9;63323:17;63316:47;63377:131;63503:4;63377:131;:::i;:::-;63369:139;;63273:245;;;:::o;63525:416::-;;63725:2;63714:9;63710:18;63702:26;;63775:9;63769:4;63765:20;63761:1;63750:9;63746:17;63739:47;63800:131;63926:4;63800:131;:::i;:::-;63792:139;;63696:245;;;:::o;63948:416::-;;64148:2;64137:9;64133:18;64125:26;;64198:9;64192:4;64188:20;64184:1;64173:9;64169:17;64162:47;64223:131;64349:4;64223:131;:::i;:::-;64215:139;;64119:245;;;:::o;64371:416::-;;64571:2;64560:9;64556:18;64548:26;;64621:9;64615:4;64611:20;64607:1;64596:9;64592:17;64585:47;64646:131;64772:4;64646:131;:::i;:::-;64638:139;;64542:245;;;:::o;64794:416::-;;64994:2;64983:9;64979:18;64971:26;;65044:9;65038:4;65034:20;65030:1;65019:9;65015:17;65008:47;65069:131;65195:4;65069:131;:::i;:::-;65061:139;;64965:245;;;:::o;65217:416::-;;65417:2;65406:9;65402:18;65394:26;;65467:9;65461:4;65457:20;65453:1;65442:9;65438:17;65431:47;65492:131;65618:4;65492:131;:::i;:::-;65484:139;;65388:245;;;:::o;65640:416::-;;65840:2;65829:9;65825:18;65817:26;;65890:9;65884:4;65880:20;65876:1;65865:9;65861:17;65854:47;65915:131;66041:4;65915:131;:::i;:::-;65907:139;;65811:245;;;:::o;66063:416::-;;66263:2;66252:9;66248:18;66240:26;;66313:9;66307:4;66303:20;66299:1;66288:9;66284:17;66277:47;66338:131;66464:4;66338:131;:::i;:::-;66330:139;;66234:245;;;:::o;66486:416::-;;66686:2;66675:9;66671:18;66663:26;;66736:9;66730:4;66726:20;66722:1;66711:9;66707:17;66700:47;66761:131;66887:4;66761:131;:::i;:::-;66753:139;;66657:245;;;:::o;66909:416::-;;67109:2;67098:9;67094:18;67086:26;;67159:9;67153:4;67149:20;67145:1;67134:9;67130:17;67123:47;67184:131;67310:4;67184:131;:::i;:::-;67176:139;;67080:245;;;:::o;67332:416::-;;67532:2;67521:9;67517:18;67509:26;;67582:9;67576:4;67572:20;67568:1;67557:9;67553:17;67546:47;67607:131;67733:4;67607:131;:::i;:::-;67599:139;;67503:245;;;:::o;67755:416::-;;67955:2;67944:9;67940:18;67932:26;;68005:9;67999:4;67995:20;67991:1;67980:9;67976:17;67969:47;68030:131;68156:4;68030:131;:::i;:::-;68022:139;;67926:245;;;:::o;68178:416::-;;68378:2;68367:9;68363:18;68355:26;;68428:9;68422:4;68418:20;68414:1;68403:9;68399:17;68392:47;68453:131;68579:4;68453:131;:::i;:::-;68445:139;;68349:245;;;:::o;68601:416::-;;68801:2;68790:9;68786:18;68778:26;;68851:9;68845:4;68841:20;68837:1;68826:9;68822:17;68815:47;68876:131;69002:4;68876:131;:::i;:::-;68868:139;;68772:245;;;:::o;69024:416::-;;69224:2;69213:9;69209:18;69201:26;;69274:9;69268:4;69264:20;69260:1;69249:9;69245:17;69238:47;69299:131;69425:4;69299:131;:::i;:::-;69291:139;;69195:245;;;:::o;69447:416::-;;69647:2;69636:9;69632:18;69624:26;;69697:9;69691:4;69687:20;69683:1;69672:9;69668:17;69661:47;69722:131;69848:4;69722:131;:::i;:::-;69714:139;;69618:245;;;:::o;69870:416::-;;70070:2;70059:9;70055:18;70047:26;;70120:9;70114:4;70110:20;70106:1;70095:9;70091:17;70084:47;70145:131;70271:4;70145:131;:::i;:::-;70137:139;;70041:245;;;:::o;70293:416::-;;70493:2;70482:9;70478:18;70470:26;;70543:9;70537:4;70533:20;70529:1;70518:9;70514:17;70507:47;70568:131;70694:4;70568:131;:::i;:::-;70560:139;;70464:245;;;:::o;70716:416::-;;70916:2;70905:9;70901:18;70893:26;;70966:9;70960:4;70956:20;70952:1;70941:9;70937:17;70930:47;70991:131;71117:4;70991:131;:::i;:::-;70983:139;;70887:245;;;:::o;71139:416::-;;71339:2;71328:9;71324:18;71316:26;;71389:9;71383:4;71379:20;71375:1;71364:9;71360:17;71353:47;71414:131;71540:4;71414:131;:::i;:::-;71406:139;;71310:245;;;:::o;71562:416::-;;71762:2;71751:9;71747:18;71739:26;;71812:9;71806:4;71802:20;71798:1;71787:9;71783:17;71776:47;71837:131;71963:4;71837:131;:::i;:::-;71829:139;;71733:245;;;:::o;71985:416::-;;72185:2;72174:9;72170:18;72162:26;;72235:9;72229:4;72225:20;72221:1;72210:9;72206:17;72199:47;72260:131;72386:4;72260:131;:::i;:::-;72252:139;;72156:245;;;:::o;72408:416::-;;72608:2;72597:9;72593:18;72585:26;;72658:9;72652:4;72648:20;72644:1;72633:9;72629:17;72622:47;72683:131;72809:4;72683:131;:::i;:::-;72675:139;;72579:245;;;:::o;72831:322::-;;73008:2;72997:9;72993:18;72985:26;;73022:121;73140:1;73129:9;73125:17;73116:6;73022:121;:::i;:::-;72979:174;;;;:::o;73160:1198::-;;73635:3;73624:9;73620:19;73612:27;;73650:121;73768:1;73757:9;73753:17;73744:6;73650:121;:::i;:::-;73782:122;73900:2;73889:9;73885:18;73876:6;73782:122;:::i;:::-;73915:123;74033:3;74022:9;74018:19;74009:6;73915:123;:::i;:::-;74049:73;74117:3;74106:9;74102:19;74093:6;74049:73;:::i;:::-;74133:123;74251:3;74240:9;74236:19;74227:6;74133:123;:::i;:::-;74267:81;74343:3;74332:9;74328:19;74319:6;74267:81;:::i;:::-;73606:752;;;;;;;;;:::o;74365:583::-;;74620:3;74609:9;74605:19;74597:27;;74635:125;74757:1;74746:9;74742:17;74733:6;74635:125;:::i;:::-;74809:9;74803:4;74799:20;74793:3;74782:9;74778:19;74771:49;74834:104;74933:4;74924:6;74834:104;:::i;:::-;74826:112;;74591:357;;;;;:::o;74955:629::-;;75210:2;75199:9;75195:18;75187:26;;75260:9;75254:4;75250:20;75246:1;75235:9;75231:17;75224:47;75285:112;75392:4;75383:6;75285:112;:::i;:::-;75277:120;;75445:9;75439:4;75435:20;75430:2;75419:9;75415:18;75408:48;75470:104;75569:4;75560:6;75470:104;:::i;:::-;75462:112;;75181:403;;;;;:::o;75591:222::-;;75718:2;75707:9;75703:18;75695:26;;75732:71;75800:1;75789:9;75785:17;75776:6;75732:71;:::i;:::-;75689:124;;;;:::o;75820:256::-;;75882:2;75876:9;75866:19;;75920:4;75912:6;75908:17;76019:6;76007:10;76004:22;75983:18;75971:10;75968:34;75965:62;75962:2;;;76040:1;76037;76030:12;75962:2;76060:10;76056:2;76049:22;75860:216;;;;:::o;76083:269::-;;76265:18;76257:6;76254:30;76251:2;;;76297:1;76294;76287:12;76251:2;76332:4;76324:6;76320:17;76312:25;;76188:164;;;:::o;76359:329::-;;76543:18;76535:6;76532:30;76529:2;;;76575:1;76572;76565:12;76529:2;76610:4;76602:6;76598:17;76590:25;;76673:4;76667;76663:15;76655:23;;76466:222;;;:::o;76695:304::-;;76854:18;76846:6;76843:30;76840:2;;;76886:1;76883;76876:12;76840:2;76921:4;76913:6;76909:17;76901:25;;76984:4;76978;76974:15;76966:23;;76777:222;;;:::o;77006:321::-;;77149:18;77141:6;77138:30;77135:2;;;77181:1;77178;77171:12;77135:2;77248:4;77244:9;77237:4;77229:6;77225:17;77221:33;77213:41;;77312:4;77306;77302:15;77294:23;;77072:255;;;:::o;77334:199::-;;77468:3;77460:11;;77506:4;77501:3;77497:14;77489:22;;77454:79;;;:::o;77540:122::-;;77649:3;77641:11;;77635:27;;;:::o;77669:176::-;;77780:3;77772:11;;77818:4;77813:3;77809:14;77801:22;;77766:79;;;:::o;77852:151::-;;77938:3;77930:11;;77976:4;77971:3;77967:14;77959:22;;77924:79;;;:::o;78010:185::-;;78167:5;78161:12;78151:22;;78132:63;;;:::o;78202:133::-;;78321:4;78311:14;;78299:36;;;:::o;78342:162::-;;78476:5;78470:12;78460:22;;78441:63;;;:::o;78511:137::-;;78620:5;78614:12;78604:22;;78585:63;;;:::o;78655:121::-;;78748:5;78742:12;78732:22;;78713:63;;;:::o;78783:122::-;;78877:5;78871:12;78861:22;;78842:63;;;:::o;78912:156::-;;79058:4;79053:3;79049:14;79041:22;;79035:33;;;:::o;79075:131::-;;79196:4;79191:3;79187:14;79179:22;;79173:33;;;:::o;79213:133::-;;79336:4;79331:3;79327:14;79319:22;;79313:33;;;:::o;79353:108::-;;79451:4;79446:3;79442:14;79434:22;;79428:33;;;:::o;79469:226::-;;79647:6;79642:3;79635:19;79684:4;79679:3;79675:14;79660:29;;79628:67;;;;:::o;79704:155::-;;79850:3;79835:18;;79828:31;;;;:::o;79868:165::-;;80024:3;80009:18;;80002:31;;;;:::o;80042:193::-;;80187:6;80182:3;80175:19;80224:4;80219:3;80215:14;80200:29;;80168:67;;;;:::o;80244:203::-;;80399:6;80394:3;80387:19;80436:4;80431:3;80427:14;80412:29;;80380:67;;;;:::o;80456:168::-;;80576:6;80571:3;80564:19;80613:4;80608:3;80604:14;80589:29;;80557:67;;;;:::o;80633:162::-;;80747:6;80742:3;80735:19;80784:4;80779:3;80775:14;80760:29;;80728:67;;;;:::o;80804:144::-;;80939:3;80924:18;;80917:31;;;;:::o;80957:163::-;;81072:6;81067:3;81060:19;81109:4;81104:3;81100:14;81085:29;;81053:67;;;;:::o;81128:91::-;;81190:24;81208:5;81190:24;:::i;:::-;81179:35;;81173:46;;;:::o;81226:99::-;;81296:24;81314:5;81296:24;:::i;:::-;81285:35;;81279:46;;;:::o;81332:85::-;;81405:5;81398:13;81391:21;81380:32;;81374:43;;;:::o;81424:72::-;;81486:5;81475:16;;81469:27;;;:::o;81503:121::-;;81576:42;81569:5;81565:54;81554:65;;81548:76;;;:::o;81631:72::-;;81693:5;81682:16;;81676:27;;;:::o;81710:129::-;;81797:37;81828:5;81797:37;:::i;:::-;81784:50;;81778:61;;;:::o;81846:121::-;;81925:37;81956:5;81925:37;:::i;:::-;81912:50;;81906:61;;;:::o;81974:108::-;;82053:24;82071:5;82053:24;:::i;:::-;82040:37;;82034:48;;;:::o;82090:145::-;82171:6;82166:3;82161;82148:30;82227:1;82218:6;82213:3;82209:16;82202:27;82141:94;;;:::o;82244:268::-;82309:1;82316:101;82330:6;82327:1;82324:13;82316:101;;;82406:1;82401:3;82397:11;82391:18;82387:1;82382:3;82378:11;82371:39;82352:2;82349:1;82345:10;82340:15;;82316:101;;;82432:6;82429:1;82426:13;82423:2;;;82497:1;82488:6;82483:3;82479:16;82472:27;82423:2;82293:219;;;;:::o;82520:97::-;;82608:2;82604:7;82599:2;82592:5;82588:14;82584:28;82574:38;;82568:49;;;:::o;82625:117::-;82694:24;82712:5;82694:24;:::i;:::-;82687:5;82684:35;82674:2;;82733:1;82730;82723:12;82674:2;82668:74;:::o;82749:133::-;82826:32;82852:5;82826:32;:::i;:::-;82819:5;82816:43;82806:2;;82873:1;82870;82863:12;82806:2;82800:82;:::o;82889:111::-;82955:21;82970:5;82955:21;:::i;:::-;82948:5;82945:32;82935:2;;82991:1;82988;82981:12;82935:2;82929:71;:::o;83007:117::-;83076:24;83094:5;83076:24;:::i;:::-;83069:5;83066:35;83056:2;;83115:1;83112;83105:12;83056:2;83050:74;:::o;83131:117::-;83200:24;83218:5;83200:24;:::i;:::-;83193:5;83190:35;83180:2;;83239:1;83236;83229:12;83180:2;83174:74;:::o",
"source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"./Utils.sol\";\nimport \"./RubyBase.sol\";\n\n\ncontract RubyUSDT is RubyBase {\n using SafeERC20 for IERC20;\n IERC20 token;\n\n constructor(address _token, address _transfer, address _redeem, uint256 _unit) RubyBase(_transfer, _redeem, _unit) public {\n token = IERC20(_token);\n }\n\n function mint(Utils.G1Point memory y, uint256 unitAmount, bytes memory encGuess) public {\n mintBase(y, unitAmount, encGuess);\n\n uint256 nativeAmount = toNativeAmount(unitAmount);\n\n // In order for the following to succeed, `msg.sender` have to first approve `this` to spend the nativeAmount.\n token.safeTransferFrom(msg.sender, address(this), nativeAmount);\n }\n\n function redeem(Utils.G1Point memory y, uint256 unitAmount, Utils.G1Point memory u, bytes memory proof, bytes memory encGuess) public {\n uint256 nativeAmount = toNativeAmount(unitAmount);\n uint256 fee = nativeAmount * redeem_fee_numerator / redeem_fee_denominator; \n\n redeemBase(y, unitAmount, u, proof, encGuess);\n\n if (fee > 0) {\n token.safeTransfer(ruby_agency, fee);\n redeem_fee_log = redeem_fee_log + fee;\n }\n token.safeTransfer(msg.sender, nativeAmount - fee);\n }\n}\n\n\n",
"sourcePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyUSDT.sol",
"ast": {
"absolutePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyUSDT.sol",
"exportedSymbols": {
"RubyUSDT": [
8012
]
},
"id": 8013,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 7879,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "32:23:7"
},
{
"id": 7880,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "56:33:7"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"id": 7881,
"nodeType": "ImportDirective",
"scope": 8013,
"sourceUnit": 10114,
"src": "91:59:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/Utils.sol",
"file": "./Utils.sol",
"id": 7882,
"nodeType": "ImportDirective",
"scope": 8013,
"sourceUnit": 8450,
"src": "151:21:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyBase.sol",
"file": "./RubyBase.sol",
"id": 7883,
"nodeType": "ImportDirective",
"scope": 8013,
"sourceUnit": 1389,
"src": "173:24:7",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 7884,
"name": "RubyBase",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1388,
"src": "221:8:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_RubyBase_$1388",
"typeString": "contract RubyBase"
}
},
"id": 7885,
"nodeType": "InheritanceSpecifier",
"src": "221:8:7"
}
],
"contractDependencies": [
1388
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 8012,
"linearizedBaseContracts": [
8012,
1388
],
"name": "RubyUSDT",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 7888,
"libraryName": {
"contractScope": null,
"id": 7886,
"name": "SafeERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 10113,
"src": "242:9:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$10113",
"typeString": "library SafeERC20"
}
},
"nodeType": "UsingForDirective",
"src": "236:27:7",
"typeName": {
"contractScope": null,
"id": 7887,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 9900,
"src": "256:6:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$9900",
"typeString": "contract IERC20"
}
}
},
{
"constant": false,
"id": 7890,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 8012,
"src": "268:12:7",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$9900",
"typeString": "contract IERC20"
},
"typeName": {
"contractScope": null,
"id": 7889,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 9900,
"src": "268:6:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$9900",
"typeString": "contract IERC20"
}
},
"value": null,
"visibility": "internal"
},
{
"body": {
"id": 7912,
"nodeType": "Block",
"src": "409:39:7",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 7910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 7906,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7890,
"src": "419:5:7",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$9900",
"typeString": "contract IERC20"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 7908,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7892,
"src": "434:6:7",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 7907,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9900,
"src": "427:6:7",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$9900_$",
"typeString": "type(contract IERC20)"
}
},
"id": 7909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "427:14:7",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$9900",
"typeString": "contract IERC20"
}